【问题标题】:Extract these properties from an array of Objects [duplicate]从对象数组中提取这些属性[重复]
【发布时间】:2019-04-16 18:33:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: javascript data-structures


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2019-02-08
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2014-08-17
    相关资源
    最近更新 更多