簡體   English   中英

如何使用JavaScript合並兩個對象?

[英]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); 

_.pick()從對象a_.keys()對象的b

 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 operatorObject.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM