首页 > 解决方案 > 从对象数组中提取这些属性

问题描述

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

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)

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

标签: javascriptdata-structures

解决方案


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

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']));


推荐阅读