[英]seperate out an array of objects inside an object (Javascript)
我有一个数据对象。 如果我做console.log(data),这是输出。
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
我需要动态地做到这一点。 有没有办法实现这一目标?
您可以将对象属性分配给变量( 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);
Javascript数组通过引用 分配 。 因此,如果您只是声明一个新变量并分配所需的属性
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()
创建的副本将被丢弃。 但是,由于对象是对相同对象的引用,因此对象属性的更改会反映在原始数组中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.