2 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
當(dāng)您將項(xiàng)目插入到 中時(shí)newArray
,您正在傳遞對(duì)該對(duì)象的引用。
因此,對(duì)新復(fù)制數(shù)組newArray
中的項(xiàng)目所做的任何更改都會(huì)反映在原始數(shù)組中,反之亦然。
為了防止這種情況,不要傳遞引用,而是傳遞對(duì)象的副本。
newArray.push({...dataArray[i]});
我正在使用 ES6擴(kuò)展語法進(jìn)行復(fù)制。我們還有Object.assign()方法和其他幾種克隆對(duì)象的方法。
對(duì)于您的數(shù)據(jù),這些就足夠了,因?yàn)樗袑傩远际腔?。如果有你必須使用的?duì)象屬性JSON.parse(JSON.stringify(dataArray[i]))
或其他方法。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
讓使用深副本: const dataArray = JSON.parse(JSON.stringify(arr));:
let originalArray = [
{
date: "2018-11-16",
type: "Entertainment",
location: "Oslo",
amount: 1024
},
{
date: "2018-11-16",
type: "Food",
location: "Oslo",
amount: 170
},
{
date: "2018-11-17",
type: "Food",
location: "Fredrikstad",
amount: 99
},
{
date: "2018-11-18",
type: "Food",
location: "Halden",
amount: 29
},
{
date: "2018-11-19",
type: "Entertainment",
location: "Oslo",
amount: 34
},
{
date: "2018-11-20",
type: "Entertainment",
location: "Oslo",
amount: 15
},
{
date: "2018-11-20",
type: "Food",
location: "Fredrikstad",
amount: 80
},
{
date: "2018-11-23",
type: "Transportation",
location: "Stavanger",
amount: 95
},
{
date: "2018-11-28",
type: "Entertainment",
location: "Oslo",
amount: 1024
},
{
date: "2018-11-29",
type: "Food",
location: "Oslo",
amount: 117.39
},
{
date: "2018-11-30",
type: "Transportation",
location: "Fredrikstad",
amount: 29
},
{
date: "2018-12-2",
type: "Transportation",
location: "Stavanger",
amount: 184
},
{
date: "2018-12-3",
type: "Entertainment",
location: "Oslo",
amount: 34
},
{
date: "2018-12-4",
type: "Food",
location: "Oslo",
amount: 162
},
{
date: "2018-12-4",
type: "Food",
location: "Fredrikstad",
amount: 231
}
];
function ConvertDataArrayToLocationArray(arr) {
const dataArray = JSON.parse(JSON.stringify(arr));
let newArray = [];
for (let i = 0; i < dataArray.length; i++) {
let existed = false;
for (let j = 0; j < newArray.length; j++) {
if (dataArray[i].location === newArray[j].location) {
newArray[j].amount = newArray[j].amount + 10;
existed = true;
}
}
if (!existed) {
newArray.push(dataArray[i]);
}
}
return newArray;
}
let a = ConvertDataArrayToLocationArray(originalArray);
console.log(originalArray[0]);
console.log(a[0]);
添加回答
舉報(bào)