从对象数组中提取这些属性

时间:2018-11-13 20:46:59

标签: javascript data-structures

假设我有一个对象数组,这里我假设对象具有三个属性,但是可能更多,我想用属性名称提取其中一些:

objArr = [{
  name : "name",
  description : "description",
  date : "date"
},{
  name : "name",
  description : "description",
  date : "date"
},{
  name : "name",
  description : "description",
  date : "date"
}]

说,我只想从上述name中提取objArr的值。 我可以使用:

(function(objArray){
  objArray.forEach(function(arrObjItem) {
    for(let name in arrObjItem) {
      if(arrObjItem.hasOwnProperty(name)) {
        console.log(objArrItem.name)
      }
    }
  })
})(objArr)

但是我真正想要的是如果问题具有不同的数据结构且每个对象具有更多的属性,则提取namedescription的值或两个以上属性的值。最后,我想为这些提取的属性创建一个映射(或具有提取的属性,值的新对象数组)(或具有提取的属性,值对的元组)。

1 个答案:

答案 0 :(得分:4)

您可以映射对象的所需键并通过映射数组来生成新对象。

function getSubset(array, keys) {
    return array.map(o => Object.assign(...keys.map(k => ({ [k]: o[k] }))));
}

var objArr = [{ name: "name", description: "description", date: "date" }, { name: "name", description: "description", date: "date" }, { name: "name", description: "description", date: "date" }];

console.log(getSubset(objArr, ['name', 'description']));