Javascript 对象数组上的长度属性未更新 两个问题考虑如下: //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属性吗Javascript 对象数组上的长度属性未更新 两个问题考虑如下: //new obj var obj = {}; obj['cars'] = []; obj['cars']['toyota'] = 1; obj['cars']['mazda'] = 0; console.log(obj); console.log(JSON.stringify(obj));,javascript,Javascript,为什么我的cars数组的长度为0?我必须手动更新length属性吗 为什么我的stringized对象中有参数时是空的?我假设它与length属性绑定在一起 Fiddle:car初始化为数组,但用作对象。并且对象没有长度属性 要获取对象的长度,可以执行̀̀̀̀object.keys(obj.length)(获取键列表,因为它是一个数组,所以它有一个长度) 但问题还在于,您将汽车初始化为数组,但将其用作对象 请参见此处的文档: 解决方案是将其初始化为对象: //new obj var obj
Fiddle: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));
var obj = {};
obj.cars = []; // obj.cars is empty array
obj.cars.toyota = 1; // obj.cars is empty array with a new property toyota
obj.cars.push('mazda'); // obj.cars is array with a new property toyota and one element mazda
console.log(obj.cars instanceof Array,
obj.cars.length,
Object.keys(obj.cars)); // output: true 1 ["toyota"]
但如果您想要一个简单的数组:
//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代码>
(而不是数组[值]=标识符
)
我已经更新了小提琴。汽车初始化为数组,但用作对象。并且对象没有长度属性 要获取对象的长度,可以执行̀̀̀̀
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));
var obj = {};
obj.cars = []; // obj.cars is empty array
obj.cars.toyota = 1; // obj.cars is empty array with a new property toyota
obj.cars.push('mazda'); // obj.cars is array with a new property toyota and one element mazda
console.log(obj.cars instanceof Array,
obj.cars.length,
Object.keys(obj.cars)); // output: true 1 ["toyota"]
但如果您想要一个简单的数组:
//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代码>
(而不是数组[值]=标识符
)
我已经更新了小提琴。你为什么不这样使用它
var cars = [];
cars.push({name:'toyota', value:1});
cars.push({name:'mazda', value:0})
你为什么不这样使用它
var cars = [];
cars.push({name:'toyota', value:1});
cars.push({name:'mazda', value:0})
obj.cars.length
为0,因为您不推送数组中的新项,而是更改it属性:
//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));
var obj = {};
obj.cars = []; // obj.cars is empty array
obj.cars.toyota = 1; // obj.cars is empty array with a new property toyota
obj.cars.push('mazda'); // obj.cars is array with a new property toyota and one element mazda
console.log(obj.cars instanceof Array,
obj.cars.length,
Object.keys(obj.cars)); // output: true 1 ["toyota"]
obj.cars.length
为0,因为您不推送数组中的新项,而是更改it属性:
//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));
var obj = {};
obj.cars = []; // obj.cars is empty array
obj.cars.toyota = 1; // obj.cars is empty array with a new property toyota
obj.cars.push('mazda'); // obj.cars is array with a new property toyota and one element mazda
console.log(obj.cars instanceof Array,
obj.cars.length,
Object.keys(obj.cars)); // output: true 1 ["toyota"]
这是因为您没有使用数组(尽管使用数组文字声明它),而是将其用作对象 数组只是对象的一个特例,这意味着它们可以有单独的属性。这些属性不存在于数组中,而是数组的属性
var arr = [1, 2, 3];
arr.thing = 'a';
console.log(arr.length); // 3
要向数组中添加元素,应使用push
:
var arr = []; // length: 0
arr.push(1); // length: 1
如果希望能够通过名称和索引访问对象,则可以将push
与自定义属性相结合
var arr = [];
arr.push(0);
arr.mazda = 0;
这是因为您没有使用数组(尽管使用数组文字声明它),而是将其用作对象 数组只是对象的一个特例,这意味着它们可以有单独的属性。这些属性不存在于数组中,而是数组的属性
var arr = [1, 2, 3];
arr.thing = 'a';
console.log(arr.length); // 3
要向数组中添加元素,应使用push
:
var arr = []; // length: 0
arr.push(1); // length: 1
如果希望能够通过名称和索引访问对象,则可以将push
与自定义属性相结合
var arr = [];
arr.push(0);
arr.mazda = 0;
将
cars
更改为对象。数组只有基于整数的索引,而不是像示例中那样的字符串。您可以使用Object.keys(obj.cars)
.length获取cars
的长度@安迪:这是可行的,但为什么它不能与数组一起正常工作?obj.cars.push('toyota');目标车推进(“马自达”);obj.cars.length;//=>2
将汽车
更改为对象。数组只有基于整数的索引,而不是像示例中那样的字符串。您可以使用Object.keys(obj.cars)
.length获取cars
的长度@安迪:这是可行的,但为什么它不能与数组一起正常工作?obj.cars.push('toyota');目标车推进(“马自达”);obj.cars.length;//=>2
“car不是一个数组,它是一个对象”可能需要重新编写,因为cars
是一个数组,但不能分配字符串索引-这是问题的基础。我在javascript中看到“arrays”必须使用数字索引。@Andy我编辑了我的帖子!感谢您关注我的帖子;)“car不是数组,它是一个对象”可能需要重新编写,因为cars
是数组,但不能分配字符串索引,这是问题的基础。我在javascript中看到,“数组”必须使用数字索引。@Andy我编辑了我的帖子!感谢您关注我的帖子;)