更新javascript对象键值

时间:2016-10-05 09:39:45

标签: javascript

如果我尝试将更多带有值的键添加到javascript对象,它会改变所有键的值,而不仅仅是我添加的键。

var corridorObject = {};
var makeObjects = [];
function someFunction(){
    var a = makePoints;
    var Corridor = viewer.entities.add({
        corridor : {
            positions : (a),
            width : 10.0,
            material : Cesium.Color.GREEN,
        }
        var idv0 = Corridor.id
        corridorObject[idv0] = makeObjects;
        console.log(corridorObject);
        makeObjects.length=0;
    }

Corridor ID是一个guid,makeObjects是一个对象数组,当我运行它时,它完美地添加了键和值,但是当我第二次运行它时,它会添加一个带有新ID和新键的新键值,但它也将所有其他键的值更改为最新值。

这是控制台,因为你可以看到第一次ID的数组是3长,第二次使用相同的id 2长

Object {91ff9967-7019-4e76-846e-c0e125481060: Array[3]}
Object {91ff9967-7019-4e76-846e-c0e125481060: Array[2], 3de2c2b1-5fb6-495c-9034-2b37713e5c30: Array[2]}

很抱歉,要更清楚,这是来自Cesiumjs,它的接收点并将它们转换为走廊,走廊id和一系列点数然后被添加到此对象。然后清空点数组。

1 个答案:

答案 0 :(得分:0)

如果你要重复

var corridorObject = {};
var makeObjects = [];
var idv0 = Corridor.id
corridorObject[idv0] = makeObjects;
console.log(corridorObject);

这些代码然后它将初始化

var corridorObject = {};

这就是为什么你只会得到一把钥匙。将初始化放在迭代之外