[英]How to merge two Objects using javascript?
a = {
coffee: 'Coffees',
mango: '10 Mangos',
shoe: '2 Shoes',
bag: '5 Bags',
abc: 'D E F'
}
b = {
coffee,
abc,
bag,
}
mergerd_output_will_be = {
coffee: 'Coffees',
abc: 'D E F',
bag: '5 Bags'
}
如何合並這樣的“ a”對象? “ b”對象鍵將僅包括輸出對象。
您可以使用Array.reduce並使用每個鍵值構造一個對象。
let a = { coffee: 'Coffees', mango: '10 Mangos', shoe: '2 Shoes', bag: '5 Bags', abc: 'DEF' } let b = {'coffee':null, 'abc':null, 'bag':null}; let c = Object.keys(b).reduce((current,key)=>({...current, [key]:a[key]}), {}); console.log(c);
const a = { coffee: 'Coffees', mango: '10 Mangos', shoe: '2 Shoes', bag: '5 Bags', abc: 'DEF' } const b = { coffee: null, abc: null, bag: null } const result = _.pick(a, _.keys(b)) console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
您提供的初始代碼無效(變量b)
您可以進行如下操作:
const a = {
coffee: 'Coffees',
mango: '10 Mangos',
shoe: '2 Shoes',
bag: '5 Bags',
abc: 'D E F'
}
const props = ['coffee', 'abc', 'bag'];
const mergerd_output_will_be = {};
props.forEach(propName => mergerd_output_will_be[propName] = a[propName]);
要么
const a = {
coffee: 'Coffees',
mango: '10 Mangos',
shoe: '2 Shoes',
bag: '5 Bags',
abc: 'D E F'
}
const b = {coffee: null, abc: null, bag: null};
const mergerd_output_will_be = {...b};
Object.keys(mergerd_output_will_be).forEach(propName =>
mergerd_output_will_be[propName]=a[propName]
)
基本上,您有2種方法,使用... spread operator
或Object.assign()
const coffee = 'Coffees' const abc = 'abc'; const bag = 'bag' const a = { coffee: 'Coffees', mango: '10 Mangos', shoe: '2 Shoes', bag: '5 Bags', abc: 'DEF' } const b = { coffee, abc, bag, } const result1 = {...a, ...b}; const result2 = Object.assign({}, a, b) console.log(result1) console.log(result2)
首先,對象應該是鍵值對,為此,您可以將b更改為數組,例如b = ['coffee','DE F','5 Bags']
然后,使用下面的代碼產生預期的輸出。
let a = {
coffee: 'Coffees',
mango: '10 Mangos',
shoe: '2 Shoes',
bag: '5 Bags',
abc: 'D E F'
};
let b = ['coffee', 'abc', 'bag'];
let output = {};
for( let i = 0; i < b.length; i++) {
output[b[i]] = a[b[i]];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.