我正在处理Javascript Application,我有一个对象和一个Array对象,我想从这两个对象中创建一个新对象。
我拥有的对象:
let test1 = { p1: 50, p2: 0, p3: 1 };
let test2 = [ { code: 'p1', search_key: 'search_p1' }
, { code: 'p2', search_key: 'search_p2' }
, { code: 'p3', search_key: 'search_p3' }
];
最终结果将是:
let test3 = {search_p1: 50, search_p2: 0, search_p3: 1};
答案 0 :(得分:2)
通过test2进行简单的迭代,然后在新对象test3中进行赋值:
let test1 = {p1: 50, p2: 0, p3: 1};
let test2 = [ {code: 'p1', search_key: 'search_p1'}, {code: 'p2', search_key: 'search_p2'}, {code: 'p3', search_key: 'search_p3'} ];
const test3 = {};
test2.forEach((element) => {
test3[element.search_key] = test1[element.code];
});
// { search_p1: 50, search_p2: 0, search_p3: 1 }
答案 1 :(得分:2)
您可以使用Array.reduce
在数组之外创建一个新对象。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax)
这里,我还使用es6的动态对象键语法以及object spread operator
(Full details here.)在每次迭代中返回一个新对象,并向该对象添加了一个新条目,其中键为值的项目。
search_key
,该值是test1 [item.code]
let test1 = { p1: 50, p2: 0, p3: 1 };
let test2 = [ { code: 'p1', search_key: 'search_p1' }
, { code: 'p2', search_key: 'search_p2' }
, { code: 'p3', search_key: 'search_p3' }
];
const test3 = test2.reduce((accum, item)=>({ ...accum, [item.search_key]: test1[item.code] }), {})
console.log( JSON.stringify(test3))
答案 2 :(得分:1)
您可以映射该数组并为新对象构建一个etries数组。
let test1 = { p1: 50, p2: 0, p3: 1 },
test2 = [{ code: 'p1', search_key: 'search_p1' }, { code: 'p2', search_key: 'search_p2' }, { code: 'p3', search_key: 'search_p3' }],
result = Object.fromEntries(test2.map(({ code, search_key }) => [search_key, test1[code] ]));
console.log(result);