【问题标题】:NODEJS : Want To Create an Array of objects, with only one key's value set to empty in each ObjectNODEJS:想要创建一个对象数组,每个对象中只有一个键的值设置为空
【发布时间】:2020-08-12 22:48:36
【问题描述】:

我有

obj1 = {
    "place": "{{base_gplaceId}}",
    "subPlace": "{{base_gsubPlaceId}}",
    "user": "{{base_userId}}",
};

我想要

var newArr = [{
    "place": "",
    "subPlace": "{{base_gsubPlaceId}}",
    "user": "{{base_userId}}",
}, {
    "place": "{{base_gplaceId}}",
    "subPlace": "",
    "user": "{{base_userId}}"
}, {
    "place": "{{base_gplaceId}}",
    "subPlace": "{{base_gsubPlaceId}}",
    "user": ""
}];

以下是我的代码

var newArr = [];
const obj1 = {
    "place": "{{base_gplaceId}}",
    "subPlace": "{{base_gsubPlaceId}}",
    "user": "{{base_userId}}",
};

KEYS = Object.keys(obj1);

KEYS.forEach(function (element) {
    var object2 = null;

    console.log("init:", object2);

    object2 = obj1;

    console.log("object2:", object2);

    console.log("element:", element);

    console.log("object2 element VAL:", object2[element]);

    object2[element] = "";

    console.log("OBJ VAL:", object2, "\n---------------");

    newArr.push(object2);
});

console.log(newArr);

有些中途 obj1 被设置为空值,因此 object2 被设置为空值而不是期望值。

【问题讨论】:

    标签: arrays node.js json javascript-objects


    【解决方案1】:

    对象是通过引用分配的。当您设置object2 = obj1; 然后更改object2 时,obj1 也会更改。循环执行此操作会导致您看到的副作用。

    改用object2 = Object.assign({}, obj1); 复制对象。

    【讨论】:

    • 谢谢,成功了!!
    猜你喜欢
    • 2020-08-15
    • 2023-01-08
    • 2019-02-22
    • 2018-04-13
    • 2011-10-12
    • 2015-02-02
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多