Как объединить два объекта с помощью JavaScript? - PullRequest
0 голосов
/ 14 января 2019
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'
}

Как я могу объединить подобный объект? 'b' ключ объекта будет включен только выводимый объект.

Ответы [ 5 ]

0 голосов
/ 14 января 2019

Вы _.pick() от объекта a _.keys() объекта b:

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 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>
0 голосов
/ 14 января 2019

Во-первых, объект должен быть парой ключ-значение, для этого вы можете изменить b на массив, такой как b = ['coffee', 'D E 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]];
}
0 голосов
/ 14 января 2019

в основном у вас есть 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: 'D E F'
}

const b = {
  coffee,
  abc,
  bag,
}

const result1 = {...a, ...b};
const result2 = Object.assign({}, a, b)

console.log(result1)
console.log(result2)
0 голосов
/ 14 января 2019

Вы можете использовать Array.reduce и создать объект с каждым значением ключа.

    let a = {
        coffee: 'Coffees',
        mango: '10 Mangos',
        shoe: '2 Shoes',
        bag: '5 Bags',
        abc: 'D E F'
    }
    let b = {'coffee':null, 'abc':null, 'bag':null};
    let c = Object.keys(b).reduce((current,key)=>({...current, [key]:a[key]}), {});
    console.log(c);
0 голосов
/ 14 января 2019

Указан неверный исходный код (переменная 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]
)
...