javascript - 从对象数组中提取这些属性
问题描述
假设我有一个对象数组,这里我假设对象具有三个属性,但它可能更多,我想提取其中一些属性名称:
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
最后,我想创建这些提取属性的映射。(或具有提取属性的新对象数组,值)(或具有提取属性的元组,值对)。
解决方案
您可以映射对象的所需键并通过映射数组来生成新对象。
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']));
推荐阅读
- reactjs - 更改页面状态会影响 Gatsby.js 中的静态呈现吗?
- android - 如何检查我的云 Firestore 集合是否包含任何文档
- hyperledger - ./prereqs-ubuntu.sh 错误:不支持 Ubuntu 焦点
- r - 如何使用 R 合并具有多列的数据框?
- node.js - 当数据超过 80k 字节时截断 mssql 库中的 nvarchar
- flutter - 是否可以使用 SQFLITE 让用户在设备上保持登录状态?
- voice-recognition - 为什么在这个例子中,window_length/hop_length 与 librosa.core.stft 中的采样率相乘?
- java - Android webview chromium 异常 - ContextResult::kFatalFailure: 支持的制服或变量太少
- google-cloud-run - 为什么在云运行域映射中需要很长时间才能将我的服务映射到 GoDaddy 中的域?
- azure-ad-b2c - 如何测试 azure ad b2c 的自定义全局异常页面?