【问题标题】:seperate out an array of objects inside an object (Javascript)分离出对象内的一组对象(Javascript)
【发布时间】:2016-01-26 20:23:53
【问题描述】:

我有一个数据对象。如果我执行 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 为假,为 1 为真。所以新数据应如下所示。

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

我需要动态地做到这一点。有没有办法做到这一点?

【问题讨论】:

  • 在 javascript 中,一切都是对象,甚至是数组和函数,原型模型使它不同于其他语言。我能想到实现你想要的唯一方法是污染全局命名空间......这不是一件好事。

标签: javascript arrays angularjs object


【解决方案1】:

Javascript 数组由reference分配。因此,如果您只是声明一个新变量并分配所需的属性

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() 创建的副本将被丢弃。但是,因为对象是对相同对象的引用,所以对象属性的变化会反映在原始数组中。

【讨论】:

  • @PA- 谢谢。最后一个查询。如何在您的方法中将 true 的值更改为“true”?
【解决方案2】:

您可以将对象属性分配给变量 (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);

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 2021-09-15
    • 2021-07-10
    • 2014-03-13
    • 2021-01-30
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多