繁体   English   中英

将项目添加到对象中的数组

[英]Adding Items to An Array In an Object

我有一个名为featureSet的对象。

featureSet内部,有许多项,包括一个称为features的数组,其中包含其他array attributes

我可以通过在for loop执行以下操作,在featureSet.features.attributes内部添加新数组

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

当我使用console.log(featureSet) ,我可以看到其中的项目。

当我使用var test = JSON.stringify(featureSet ),然而,只有原来的featureSet返回。

我该如何规避这个问题,以便当我调用JSON.stringify时,新项目也在那里?

先感谢您。

我猜您正在做什么:

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.stringifySymbol.iterator的帮助下循环遍历数组道具。 您的属性没有正整数索引,这就是为什么它们会被忽略的原因。 在MDN上也有一个示例: https : //developer.mozilla.org/zh-CN/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]"

我该如何规避这个问题,以便当我调用JSON.stringify时,新项目也在那里?

您正在尝试将属性追加到数组中 ,这将不起作用。

您只能将属性附加到对象

 /* the original feature set */ const featureSet = { features: [ {feature: 'color', attributes: {}}, // this is an object, not an array {feature: 'shape', attributes: []} // this is an array as per original scenario ] } /* adding attributes to an object succeeds */ featureSet.features[0].attributes.NEWITEM = ['this', 'was', 'appended']; /* adding attributes to an array quietly fails */ featureSet.features[1].attributes.NEWITEM = ['this', 'was', 'not', 'appended']; const featureSetAsJSONString = JSON.stringify(featureSet) console.log(featureSetAsJSONString) // notice that feature[0] is as expected, but [1] isn't 

希望这可以帮助。 干杯,

尝试这个

featureSet.features[i].attributes.push({NEWITEM: [NEWITEM_ARRAY]})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM