у меня есть массив myData="1|N|BK1||MATH|1890,00|2100,00|1: 2|N|BK2||НАУКА|1520,00|1790,00|1: "
Мне нужно изменить эти значения myData, как показано ниже:
myFinalArray=
[
{
"p_s.no": "3",
"p_ebook": "N",
"p_id": "BK1",
"p_ebooktitle": "",
"p_name": "MATH",
"p_cprice": "1890.00",
"p_lprice": "2100.00",
"p_Q": "1"
},
{
"p_s.no": "3",
"p_ebook": "N",
"p_id": "BK2",
"p_ebooktitle": "",
"p_name": "SCIENCE",
"p_cprice": "1890.00",
"p_lprice": "2100.00",
"p_Q": "1"
}
]
Я пытаюсь разделить значения с помощью ":" и затем "|" и прокручивайте каждое значение, чтобы добавить текст для каждого значения. Наконец, подтолкнуть его к переменной. Я чувствую, что могут быть лучшие способы добиться этого. Пожалуйста, помогите мне с вашими идеями.
Пример кода ниже:
this.myDataArray = this.myData.split(": ")
this.myDataArray.forEach(element=>
{
this.myNewDataArray=element.split("|")
for (let i = 0; i < this.myNewDataArray.length; i++)
{
if (i===0){
this.temp = ('"p_s.no"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 1) {
this.temp = this.temp + "," + ('"p_ebook"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 2) {
this.temp = this.temp + "," + ('"p_id"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 3) {
this.temp = this.temp + "," + ('"p_ebooktitle"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 4) {
this.temp = this.temp + "," + ('"p_name"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 5) {
this.temp = this.temp + "," + ('"p_cprice"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 6) {
this.temp = this.temp + "," + ('"p_lprice"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
else if (i === 7) {
this.temp = this.temp + "," + ('"p_Q"' + ':' + '"' + this.myNewDataArray[i] + '"');
}
}
if (this.temp !== "") {
this.myFinalArray.push("{" + this.temp + "}");
}
})
Поместите все ключи вашего объекта в массив, чтобы вы могли перебирать массив, чтобы сопоставить каждое имя свойства и значение в объекте в map() строки разделенных данных.
const keys = ["p_s.no","p_ebook","p_id","p_ebooktitle","p_name","p_cprice","p_lprice","p_Q"];
const myData= "1|N|BK1||MATH|1890.00|2100.00|1: 2|N|BK2||SCIENCE|1520.00|1790.00|1: ";
const res = myData.split(': ')
.filter(s => !!s.trim())
.map(s => s.split('|').reduce((a,c,i) => (a[keys[i]] = c, a),{}))
console.info(res)