JavaScript数组和对象映射
我有两个javascript变量 1名为类别的数组:JavaScript数组和对象映射,javascript,arrays,maps,javascript-objects,Javascript,Arrays,Maps,Javascript Objects,我有两个javascript变量 1名为类别的数组: ["Casual & Fashion", "Jackets", "PPE & Safety Equipment", "Sports & Leisure", "Workwear", "Accessories"] [ {field: "Workwear", cost: 1
["Casual & Fashion", "Jackets", "PPE & Safety Equipment", "Sports & Leisure", "Workwear", "Accessories"]
[
{field: "Workwear", cost: 1.3, cost_p2: 0, cost_diff: -1.3, revenue: 2.6},
{field: "Hide", cost: 2.8, cost_p2: 0, cost_diff: -2.8, revenue: 5.6},
{field: "Accessories", cost: 0, cost_p2: 3.1, cost_diff: 3.1, revenue: 10},
{field: "Safety boots", cost: 24.95, cost_p2: 0, cost_diff: -24.95, revenue: 91},
{field: "Safety Shoes", cost: 13.9, cost_p2: 0, cost_diff: -13.9, revenue: 27.8},
{field: "Shorts", cost: 7.45, cost_p2: 0, cost_diff: -7.45, revenue: 14.9},
{field: "Soft Shell", cost: 17.3, cost_p2: 17.3, cost_diff: 0, revenue: 31.92}
]
2称为结果的对象数组:
["Casual & Fashion", "Jackets", "PPE & Safety Equipment", "Sports & Leisure", "Workwear", "Accessories"]
[
{field: "Workwear", cost: 1.3, cost_p2: 0, cost_diff: -1.3, revenue: 2.6},
{field: "Hide", cost: 2.8, cost_p2: 0, cost_diff: -2.8, revenue: 5.6},
{field: "Accessories", cost: 0, cost_p2: 3.1, cost_diff: 3.1, revenue: 10},
{field: "Safety boots", cost: 24.95, cost_p2: 0, cost_diff: -24.95, revenue: 91},
{field: "Safety Shoes", cost: 13.9, cost_p2: 0, cost_diff: -13.9, revenue: 27.8},
{field: "Shorts", cost: 7.45, cost_p2: 0, cost_diff: -7.45, revenue: 14.9},
{field: "Soft Shell", cost: 17.3, cost_p2: 17.3, cost_diff: 0, revenue: 31.92}
]
现在,如您所见,“工作服”和“配饰”都出现在这两个类别中,因此我需要我的最终阵列如下所示(基于原始类别):
仅取匹配的“字段”值和相关的“收入”值
我可以用语言表达逻辑,但语法正在扩展我的能力
谢谢你的帮助。谢谢是的,有两个循环,
map
和find
:
const categories = ["A", "B", "C", "D"];
const result = [{"A" : 3}, {"D" : 7}];
const final = categories.map(category => {
const resultItem = result.find(item => category in item);
return resultItem ?? { [category]: 0 };
});
console.log(final);
// [
// 0: { A: 3 },
// 1: { B: 0 },
// 2: { C: 0 },
// 3: { D: 7 }
// ]
回答:原问题措辞更改后:
const final = categories.map(category => {
const resultItem = result.find(item => item.field === category);
return { [category]: resultItem ? resultItem.revenue : 0 };
});
console.log(final);
// [
// 0: {Casual & Fashion: 0},
// 1: {Jackets: 0},
// 2: {PPE & Safety Equipment: 0},
// 3: {Sports & Leisure: 0},
// 4: {Workwear: 2.6},
// 5: {Accessories: 10}
// ]
这段代码也经过了测试。我们只是用一种简单的方式完成了
let arr=[“休闲与时尚”、“夹克”、“PPE与安全设备”、“运动与休闲”、“工作服”、“配件”];
让dataArr=[
{字段:“工作服”,成本:1.3,成本2:0,成本差异:-1.3,收入:2.6},
{字段:“隐藏”,成本:2.8,成本2:0,成本差异:-2.8,收入:5.6},
{字段:“附件”,成本:0,成本2:3.1,成本差异:3.1,收入:10},
{字段:“安全靴”,成本:24.95,成本2:0,成本差异:-24.95,收入:91},
{字段:“安全鞋”,成本:13.9,成本2:0,成本差异:-13.9,收入:27.8},
{字段:“空头”,成本:7.45,成本2:0,成本差异:-7.45,收入:14.9},
{字段:“软壳”,成本:17.3,成本2:17.3,成本差异:0,收入:31.92}
];
const resultar=arr.map((itemName)=>{
const result=dataArr.find(({field})=>field==itemName)
返回itemName==结果?字段?
{[itemName]:parseFloat(`${result.revenue}`)}:{[itemName]:0};
})
console.log(resultar)代码>