我遇到的问题是,当我解析一个JSON字符串(正确返回一个元素数组)时,我尝试将一个新元素推入具有空值的数组。

这里的问题是:

console.log('addons ', this.categories[this.editingId - 1].addons);
console.log('parsed ', JSON.parse(this.categories[this.editingId - 1].addons));
console.log('pushed ', JSON.parse(this.categories[this.editingId - 1].addons).push({name:'', price:''}));



  addons是[{“ name”:“ Peppers”,“ price”:50},{“ name”:“ Pepperoni”,“ price”:150},{“ name”:“ Chicken”,“ price”:250} ,{“名称”:“奶酪”,“价格”:150},{“名称”:“西兰花”,“价格”:100},{“名称”:“玉米”,“价格”:75},{ “ name”:“ Extra Sauce”,“ price”:250},{“ name”:“ Extra Meat”,“ price”:350}]


当最后一个参数应该将带有新推入元素的数组记录到数组时,返回该数组长度的整数。

如何成功推入阵列?

这里显示一个最小的示例:
https://jsfiddle.net/L5p0ueqe/1/

最佳答案

Array.push()返回数组的长度。这是一个已记录的功能。您已成功推送到阵列。您只是没有成功console.log设置新值。当您console.log()这:

JSON.parse(this.categories[this.editingId - 1].addons).push({name:'', price:''}))


您将记录push()的返回值,而不是被推入其中的数组。

要解决此问题,您应该保存JSONA.parse()push,然后是console.log的结果:



let addons = '[{"name":"Peppers","price":50},{"name":"Pepperoni","price":150},{"name":"Chicken","price":250},{"name":"Cheese","price":150},{"name":"Broccoli","price":100},{"name":"Corn","price":75},{"name":"Extra Sauce","price":250},{"name":"Extra Meat","price":350}]';

var parsed = JSON.parse(addons)
console.log('parsed ', parsed);

parsed.push({name:'Caviar', price:'10000'})

console.log('pushed ', parsed);





push()的一些文档在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

10-06 08:56
查看更多