分离对象内的对象数组(Javascript)

时间:2016-01-26 20:23:54

标签: javascript arrays angularjs object

我有一个数据对象。如果我做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

我需要动态地做到这一点。有没有办法实现这个目标?

2 个答案:

答案 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;
   });

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