考虑以下对象的两个问题:
//new obj
var obj = {};
obj['cars'] = [];
obj['cars']['toyota'] = 1;
obj['cars']['mazda'] = 0;
console.log(obj);
console.log(JSON.stringify(obj));
为什么我的 cars 数组的长度为 0?我必须手动更新长度属性吗?
当我的字符串化对象包含参数时,为什么它是空的,我假设它与 length 属性相关联?
fiddle :https://jsfiddle.net/wcd7f8Lz/
最佳答案
car 被初始化为数组,但用作对象。并且对象没有长度属性...
要获取对象的长度,可以执行 ̀̀̀̀Object.keys(obj).length
(获取键列表,因为它是一个数组,所以它有一个长度)。
但问题还在于,您将汽车初始化为数组,但却将其用作对象...
请参阅此处的文档:
解决方案是将其初始化为对象:
//new obj
var obj = {};
obj['cars'] = {}; //And other object
obj['cars']['toyota'] = 1;
obj['cars']['mazda'] = 0;
console.log(obj);
console.log(JSON.stringify(obj));
但是如果你想要一个简单的数组:
//new obj
var obj = {};
obj['cars'] = [];
obj['cars'][1] = "toyota";
obj['cars'][0] = "mazda";
console.log(obj);
console.log(JSON.stringify(obj));
语法为 ̀array[identifier] = value;
(而不是 ̀̀̀̀̀数组[值] = 标识符
)
我已经更新了 fiddle 。
关于javascript - 对象数组上的长度属性未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631714/