javascript - 遍历 2 个包含对象的数组并使用第一个数组键返回第二个数组的值
问题描述
我正在尝试用户.map()
映射 2 个数组并使用 arr1 的现有键值返回一个带有新键和值的结果数组
我正在使用以下数组
arr1 = [
{"name":"orange","mappedHeader":"dollar"},
{"name":"apple","mappedHeader":"coin"}
];
arr2 = [
{"orange":"red","pumpkin":"white","apple":"yellow", "plum":"green"},
{"orange":"pink","pumpkin":"brown","apple":"gold","plum":"blue"},
];
whatIWant = [
{"dollar":"red", "coin":"yellow"},
{"dollar":"pink", "coin","gold"}
];
我试过使用.map()
,.filter()
但我似乎没有正确实施
请帮忙
解决方案
arr1 包含映射的字段和标题
var arr1 = [
{"name":"orange","mappedHeader":"dollar"},
{"name":"apple","mappedHeader":"coin"}
];
arr2 包含我们将要转换的对象
var arr2 = [
{"orange":"red","pumpkin":"white","apple":"yellow", "plum":"green"},
{"orange":"pink","pumpkin":"brown","apple":"gold","plum":"blue"},
];
解决方案
//var whatIWant = [
// {"dollar":"red", "coin":"yellow"},
// {"dollar":"pink", "coin","gold"}
//];
var whatIWant = arr2.map(item=>{ /* Step 1*/
let obj = {};
arr1.forEach((v,i,a)=>obj[v.mappedHeader] = item[v.name]); /* Step 2 */
return obj; /* Step 3 */
})
一步步
- 使用 .map(...) 迭代对象
- 使用 forEach(...) 将每个字段映射到新的空对象,从项目中获取值并使用mappedHeader属性名称
item[v.name]
设置具有该值的新字段,obj[v.mappedHeader] = ...
- 返回 obj 作为新返回列表/数组的新对象
推荐阅读
- python - 使用 pandas apply() 根据条件创建新列
- php - PHP - 字体回显问题
- php - Apache 和 IIS 之间的 PHP 脚本评估差异
- ubuntu - zfs ubuntu 18.04 上的 iozone 基准测试 - 错误:无法打开临时文件打开:无效参数
- apache - Apache 2.4.6 - ServerAlias 通配符,但 %1 未被替换
- scikit-learn - scikit-learn - 使用带有 RandomForestClassifier.predict() 的单个字符串?
- c# - 如何使用 API 在 Auth0 中验证以无密码身份验证发送的代码?
- sql - 使用声明的变量在 SQL Server 中运行演绎 CTE
- java - 如何通过 JNI 正确地将 std::map<> 从 C++ 发送到 Java?
- loops - Roblox Lua 中的褪色球