javascript - 对象数组上的长度属性未更新

标签 javascript

考虑以下对象的两个问题:

//new obj

var obj = {};
obj['cars'] = [];
obj['cars']['toyota'] = 1;
obj['cars']['mazda'] = 0;


console.log(obj);
console.log(JSON.stringify(obj));
  1. 为什么我的 cars 数组的长度为 0?我必须手动更新长度属性吗?

  2. 当我的字符串化对象包含参数时,为什么它是空的,我假设它与 length 属性相关联?

fiddle :https://jsfiddle.net/wcd7f8Lz/

最佳答案

car 被初始化为数组,但用作对象。并且对象没有长度属性...

要获取对象的长度,可以执行 ̀̀̀̀Object.keys(obj).length (获取键列表,因为它是一个数组,所以它有一个长度)。

但问题还在于,您将汽车初始化为数组,但却将其用作对象...

请参阅此处的文档:

http://www.w3schools.com/js/js_arrays.asp

http://www.w3schools.com/js/js_objects.asp

解决方案是将其初始化为对象:

//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/

相关文章:

javascript - 将参数传递给 Web 组件以在类中使用失败

javascript - 在解决 promise 之前从函数返回是否有任何问题?

javascript - Bootstrap 确认 - 对元素属性应用 onConfirm 函数

javascript - 在javascript中子类化ES6集

javascript - 谷歌地图v3同步拖动

javascript - 如何测试我的网页的性能

javascript - jQuery 中触发更改问题

javascript - 与服务共享数据

javascript - 为上传的图片添加几何圆圈

javascript - 需要在 javascript 中创建 Json 字符串的帮助