我有一个数据对象。如果我做console.log(数据),这是输出。
Object {Info: Array[3]}
> Info: Array[3]
>[0]: Object
name: 'Alex'
sex: 'Male'
new_joinee: 0
>[1]: Object
name: 'Anna'
sex: 'female'
new_joinee: 1
>[2]: Object
name: 'lester'
sex: 'Male'
new_joinee: 1
现在,如果我想访问new_joinee,我必须输入如下内容。
data.Info[0].new_joinee
data.Info[2].sex
这里提到的几个例子。我想消除这一点,而只需输入
即可获得输出Info[0].new_joinee
Info[2].sex
有人能告诉我怎样才能实现这一目标。 (亚历山大回答)
我在这个问题上有一个问题。因为,我们可以看到new_joinee为0或1.我希望它为0表示为false而对于1表示为true。因此新数据应如下所示。
Info: Array[3]
>[0]: Object
name: 'Alex'
sex: 'Male'
new_joinee: false
>[1]: Object
name: 'Anna'
sex: 'female'
new_joinee: true
>[2]: Object
name: 'lester'
sex: 'Male'
new_joinee: true
我需要动态地做到这一点。有没有办法实现这个目标?
答案 0 :(得分:3)
您可以将对象属性分配给变量(var Info = data.Info;
)
var data = {
Info: [
{ name: 'Alex', sex: 'Male', new_joinee: 0 },
{ name: 'Anna', sex: 'female', new_joinee: 1 }
]
};
var Info = data.Info;
console.log(Info[0].name);
console.log(Info[0].new_joinee);
console.log(Info[0].sex);
console.log(Info[1].name);
console.log(Info[1].new_joinee);
console.log(Info[1].sex);

答案 1 :(得分:3)
引用 分配。因此,如果您只是声明一个新变量并分配所需的属性
var info = data.Info;
瞧,您可以直接使用对象的原始属性。
console.log(info[2].name,'is',info[2].sex);
对于第二个问题,.map()
是你的朋友
var info=data.Info.map(function(element){
element.new_joinee=(element.new_joinee!=0);
return element;
});
请注意您已更改语义。现在,info
是数组的副本,而不是引用。尽管它包含的对象仍然是对原始对象的引用。
你可以这样做
var info = data.Info;
info.map(function(element){
element.new_joinee=(element.new_joinee!=0);
return element;
});
在这种情况下info
和data.Info
是对同一数组的引用,.map()
创建的副本就会被丢弃。但是,因为对象是对相同对象的引用,所以对象属性的更改会反映在原始数组中。