[英]JavaScript map update subarray to all be the same value
我創建了一個函數來將相同的數量放入排列中,然后映射到分配該月的值,寫下來時抱歉聽起來很奇怪。
但是每次我運行它時,正在更新的子數組都會顯示相同的數據:
this.calcTest([
{ id: '001', name: 'First', arrOfStuff: [{ period: '2022-01-01', value: 10 },{ period: '2022-02-01', value: 10 }]},
{ id: '002', name: 'Second', arrOfStuff: [{ period: '2022-01-01', value: 11.11 }]},
{ id: '003', name: 'Third', arrOfStuff: [{ period: '2022-01-01', value: 12.12 },{ period: '2022-02-01', value: 9.99 }]},
{ id: '004', name: 'Fourth', arrOfStuff: [{ period: '2022-01-01', value: 13.13 }] }]);
calcTest(d: any) {
const testData = [];
const periods = [
{ period: '2022-01-01', value: '' },
{ period: '2022-02-01', value: '' },
];
d.map((f, indexCheck) => {
let tempArr = f.arrOfStuff;
f.arrOfStuff = periods;
tempArr.map((t) => {
let i = f.arrOfStuff.findIndex((as) => as.period === t.period);
f.arrOfStuff[i].value = t.value;
});
f.check = indexCheck;
testData.push(f);
});
console.log(testData);
}
結果是:
[{ id: '001', name: 'First', arrOfStuff: [{ period: '2022-01-01', value: 13.33 },{ period: '2022-02-01', value: 9.99 }], check: 0}, { id: '002', name: 'Second', arrOfStuff: [{ period: '2022-01-01', value: 13.33 },{ period: '2022-02-01', value: 9.99 }],檢查:1},{ id:'003',名稱:'Third',arrOfStuff:[{期間:'2022-01-01',值:13.33},{期間:'2022-02-01 ', value: 9.99 }], check: 3}, { id: '004', name: 'Fourth', arrOfStuff: [{ period: '2022-01-01', value: 13.33 },{ period: '2022 -02-01',值:9.99 }],檢查:4}]
我希望它導致:
[{ id: '001', name: 'First', arrOfStuff: [{ period: '2022-01-01', value: 10 },{ period: '2022-02-01', value: 10 }],檢查:0},{ id:'002',名稱:'Second',arrOfStuff:[{期間:'2022-01-01',值:11.11},{期間:'2022-02-01',值: '' }],檢查:1},{ id:'003',名稱:'Third',arrOfStuff:[{期間:'2022-01-01',值:12.12},{期間:'2022-02- 01', value: 9.99 }], check: 3}, { id: '004', name: 'Fourth', arrOfStuff: [{ period: '2022-01-01', value: 13.33 },{ period: ' 2022-02-01',值:''}],檢查:4}]
我用這段代碼解決了它:
calcTest(d: any) {
const periods = JSON.stringify([
{ period: '2022-01-01', value: '' },
{ period: '2022-02-01', value: '' },
]);
d.map((f, indexCheck) => {
let tempArr = f.arrOfStuff;
f.arrOfStuff = JSON.parse(periods);
tempArr.map((t) => {
let i = f.arrOfStuff.findIndex((as) => as.period === t.period);
f.arrOfStuff[i].value = t.value;
});
f.check = indexCheck;
});
console.log(d);
}
我以前遇到過這個問題,它與內存分配有關,因此您必須將對象作為字符串放入內存中,然后解析出來以用作對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.