【发布时间】:2018-03-17 14:36:09
【问题描述】:
我有几个对象,我想创建另一个对象,它具有来自特定数组 (const props = []) 的键和来自这些对象的值 - 如果它只存在于这些对象中,但如果不存在 - 我想推送null 或其他一些假值。
我的代码:
const props = ["name", "price", "qty", "category"]
let len = props.length;
const obj_1 = {
name: "Product_1",
price: 120,
category: 'phone'
}
const obj_2 = {
name: "Product_2",
price: 7893,
category: 'program_eq',
qty: 5
}
const final_obj = {
name: ["Product_1", "Product_2"],
price: [120, 7893],
category: ["phone", "program_eq"],
qty: [null, 5]
}
我花了很多时间来解决这个问题并找到了一些解决方案 - 但它只给了我第一个对象。 我正在使用 lodash/map,它可以帮助我处理不同类型的集合。
你可以在下面看到我的解决方案:
const final_obj = {};
const props = ["name", "price", "qty", "category"];
let len = props.length;
const obj = {
c1s6c156a1cascascas: {
item: {
name: "Product_1",
price: 120,
category: "phone"
}
},
c454asc5515as41cas78: {
item: {
name: "Product_2",
price: 7893,
category: "program_eq",
qty: 5
}
}
};
_.map(obj, (element, key) => {
console.log(element.item);
while (len) {
let temp = props.shift();
let tempData = [];
if (element.item.hasOwnProperty([temp])) {
tempData.push(element.item[temp]);
} else {
tempData.push("---");
}
final_obj[temp] = tempData;
len--;
}
});
console.log(final_obj);
//
category:["phone"]
name:["Product_1"],
price:[120],
qty:["---"],
【问题讨论】:
标签: javascript arrays loops object lodash