javascript - 如何根据javascript中存在的键等条件获取新的数组对象
问题描述
如果键存在于 JavaScript 中,我想知道如何创建一个新的数组对象。
我有两个数组对象,arr1
并且arr2
. 在arr2
中,如果c
值为 true 并且 keyarr1
和 value 相等,则将其推送到新的数组对象。如果arr2
of 的 key-value 为 true 并且与 的键匹配arr1
,则推送到 JavaScript 中的新数组。
var arr1 = {
data:[
{id:1, place: "IN", year: "2020", mode: "ON"},
{id:3, place: "TH", year: "2022", mode: "OFF"},
{id:5, place: "AU", year: "2025", mode: "ON"}
]
};
var arr2=[
{a: "place", c: true},
{a: "year", c: true},
{a: "mode", c: false},
]
var finals = [];
var result = arr1.data.map(e=>{
arr2.forEach(i=>{
if(i.c == true && Object.keys(e)){
finals.push(e);
}
})
return finals
})
预期输出:
[
{place: "IN", year: "2020"}
{place: "TH", year: "2022"},
{place: "AU", year: "2025"}
]
解决方案
你快到了。
arr1.data.map
创建一个新数组,- 对于 arr1 中的每个项目,创建一个新对象
newObj
, - 循环遍历每个键
arr2
- 如果为真,则在 中添加
key.a
相应的值item
key.c
- 返回
newObj
var arr1 = {
data:[
{id:1, place: "IN", year: "2020", mode: "ON"},
{id:3, place: "TH", year: "2022", mode: "OFF"},
{id:5, place: "AU", year: "2025", mode: "ON"}
]
};
var arr2=[
{a: "place", c: true},
{a: "year", c: true},
{a: "mode", c: false},
];
var result = arr1.data.map(item => { // 1
let newObj = {}; // 2
arr2.forEach(key => { // 3
if (key.c) { // 4
newObj[key.a] = item[key.a]
}
});
return newObj // 5
})
console.log(result)
推荐阅读
- c++ - 在 C++ 中的 Qt 中使用 WINAPI 线程的问题
- javascript - 如何使用按钮从剪贴板粘贴图像?
- java - 在脚本中,如何测试是使用 Corretto 还是 Oracle JRE?
- python - pandas groupby,上下组成员的区别
- javascript - 自动调整文本区域大小
- regex - 每当 URL 中有大写字母时反应路由器重定向
- flutter - 如何获得颤动的future.wait响应?
- java - 在地图中检索数据
- spring - 我可以根据包注入bean吗?
- arangodb - ArangoDB 无法初始化 RocksDB 引擎:IO 错误:同时锁定文件