首页 > 解决方案 > 向对象中的数组添加项

问题描述

我有一个名为featureSet.

里面featureSet有很多项,包括一个名为 的数组features,其中包含其他数组,attributes

featureSet.features.attributes我可以通过在 a 中执行以下操作来添加一个新数组for loop

featureSet.features[i].attributes.NEWITEM= [NEWITEM_ARRAY];

当我使用 时console.log(featureSet),我可以看到这些项目在那里。

但是,当我使用var test = JSON.stringify(featureSet) 时,只featureSet返回原件。

我怎样才能避免这种情况,以便当我调用 JSON.stringify 时,新项目也在那里?

先感谢您。

标签: javascriptarraysjson

解决方案


我猜你所做的接近于:

let arr = []
console.log(arr) // []
arr.push(1)
console.log(arr) // [1]
arr.abc = 2
console.log(arr.abc) // 2
arr.push(3)
console.log(arr) // [1, 3]
console.log(JSON.stringify(arr)) // '[1, 3]'
console.log(arr.abc) // 2

JSON.stringify在 .的帮助下循环遍历数组道具Symbol.iterator。您的属性没有正整数索引,这就是它们被忽略的原因。MDN 上也有一个示例:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

再考虑一个例子(继续上面的例子):

arr[7] = 7
console.log(arr) // [1, 3, undefined, undefined, undefined, undefined, undefined, 7]
console.log(JSON.stringify(arr)) // "[1,3,null,null,null,null,null,7]"

推荐阅读