繁体   English   中英

分离出对象内部的对象数组(JavaScript)

[英]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;
   });

在这种情况下, infodata.Info是对同一数组的引用, .map()创建的副本将被丢弃。 但是,由于对象是对相同对象的引用,因此对象属性的更改会反映在原始数组中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM