javascript - 复制数组元素修改并再次添加

标签 javascript typescript

原始数组是newData。我想向 newData 添加一个数组元素,并且添加的数组元素应具有 Rank 1

问题是两条记录的排名都更新为 1。第二条记录的排名应为 1,第一条记录的排名应为 null

请告诉我我在这里做错了什么。

let newData = [{
    "key1": {
        "cc":'IND'   
    },          
    "key2": {
        "rank": null
    }
}];

let setData = newData.concat(newData.slice());

setData.forEach(data => { 
    data.key2.rank =+ 1;
});

最佳答案

您可以尝试以下操作

let newData = [{"key1": {"cc":'IND' }, "key2": {"rank": null}}];

    // Concatenate arrays use spread operator and can use map rather than slice
    let setData = [...newData, ...newData.map(data => { 
        /* Objects are passed by reference, you need to break the reference
         * to create the clone of the object. */
        data = JSON.parse(JSON.stringify(data));
        data.key2.rank =+ 1; 
        return data;
    })];

console.log(setData);

关于javascript - 复制数组元素修改并再次添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50485118/

相关文章:

javascript - 有没有办法简化这个 css?

javascript - 比较 $watch 函数内的基本类型时出错

javascript - 如何为移动设备制作可滚动的 div 或表格?

angular - 如何使用 TypeScript 将多个参数传递给 Angular 中的 @Directives (@Components)?

typescript - 在 TypeScript 中以类型安全的方式调用函数

javascript - node.js Express router.post 给出 404

javascript - Meteor.js/MongoDB 日期之间的查询不返回数据

inheritance - 是否可以删除子类/接口(interface)中的继承字段/方法?

reactjs - 使用 Electron 锻造打包时如何预编译 typescript

javascript - 在 Typescript 中,Object.prototype 函数可以返回 Sub 类型实例吗?