循环遍历对象数组并仅获取几个对象

Loop through an array of objects and get only a few objects

我有以下对象数组。

[Object, Object, Object]
    0:Object
       name: "Rick"
       Contact: "Yes"
       id: 1
    1:Object
       name:"Anjie"
       Contact:"No"
       id: 2
    2:Object
       name:"dillan"
       Contact:"Maybe"
       id:3

现在,我只需要名称和联系人对象。我怎么能得到那个。另外,在其他情况下,我想要名称和 ID。有人可以告诉我如何实现这一点吗?

例如只有姓名和联系人应该给出此结果。

[Object, Object, Object]
    0:Object
      name: "Rick"
      Contact: "Yes"
    1:Object
      name:"Anjie"
      Contact:"No"
    2:Object
      name:"dillan"
      Contact:"Maybe"

最简单的方法是使用map函数:

var objs = objs.map(function(obj) {
    return {
        name: obj.name,
        Contact: obj.Contact
    }
});

或者,您可以手动循环:

var objs = [{
       name: "Rick",
       Contact: "Yes",
       id: 1
}, {
       name:"Anjie",
       Contact:"No",
       id: 2
}, {
       name:"dillan",
       Contact:"Maybe",
       id:3
}];

var newObjs = [];

for ( var i=0, len = objs.length; i < len; i++ )
{
    newObjs.push({
        name: objs[i].name,
        Contact: objs[i].Contact
    });
}

console.log(newObjs);

如果您想访问数组中对象的某些属性,您可以使用 for 循环并传递 i 的值,例如:-

for(var i=0;i<object.length;i++){
   object[i].name // give you name
   object[i].contact // give you contact do whatever you want to do with this
}

或者简单地编写一个函数,从数组中的对象中创建一个单独的对象。

你可以使用下划线 map and pick:

var result = _.map(data, item => _.pick(item, 'name', 'Contact'));  

您可以使用 map() 和 return 新对象数组并删除 属性。要创建对象的副本,您可以使用 (JSON.parse(JSON.stringify()))

var data = [{ id: 1, name: "Rick", Contact: "Yes" }, { id: 2, name: "Anjie", Contact: "No" }, { id: 3, name: "dillan", Contact: 'Maybe' }];

var result = data.map(function(e) {
  var r = (JSON.parse(JSON.stringify(e)));
  delete r.id;
  return r;
});

console.log(result)
console.log(data)

或者你使用Object.assign({}, e)

var data = [{ id: 1, name: "Rick", Contact: "Yes" }, { id: 2, name: "Anjie", Contact: "No" }, { id: 3, name: "dillan", Contact: 'Maybe' }];

var result = data.map(function(e) {
  var r = Object.assign({}, e);
  delete r.id;
  return r;
});

console.log(result);
console.log(data);

通用解决方案可以是具有给定数据数组和键数组的解决方案。所需属性映射到新数组中。

function getWithKeys(array, keys) {
    return array.map(function (a) {
        var o = {};
        keys.forEach(function (k) {
            o[k] = a[k];
        });
        return o;
    });
}

var array1 = [{ name: "Rick", Contact: "Yes", id: 1 }, { name: "Anjie", Contact: "No", id: 2 }, { name: "dillan", Contact: "Maybe", id: 3 }],
    array2 = getWithKeys(array1, ['name', 'Contact']),
    array3 = getWithKeys(array1, ['name', 'id']);

console.log(array2);
console.log(array3);