如何将值从一个对象数组转换为另一对象数组

问题描述 投票:0回答:1

我想从一个带有键的对象数组中获取值,并将值从另一个带有相同键的对象数组中获取。

const array1 = [{
                key1: 7,
                key2: 1,
                key3: 37,
               }];
const array2 = [
  {
      title: 'Some Title 1',
      key: 'key1',
      number: '',
      icon: require('../../assets/some2.png')
  },
  {
      title: 'Some Title 2',
      key: 'key2',
      number: '',
      icon: require('../../assets/some1.png')
  },
  {
      title: 'Some Title 3',
      key: 'key3',
      number: '',
      icon: require('../../assets/some3.png')
  },
];

我曾尝试使用Object.keys从array1对象获取所有键。

const keys = Object.keys(obj);
      keys.map((key) => {
      if (array2[key] === key) {
         // console.log('card detail matching');
         // add to the array 2 with value 
        }
      })

但是在一点之后没有意义。

期望数组

const resultArray = [
  {
      title: 'Some Title 1',
      key: 'key1',
      number: 7,
      icon: require('../../assets/some2.png')
  },
  {
      title: 'Some Title 2',
      key: 'key2',
      number: 1,
      icon: require('../../assets/some1.png')
  },
  {
      title: 'Some Title 3',
      key: 'key3',
      number: 37,
      icon: require('../../assets/some3.png')
  }
]

我希望输出是键的值,将在'number'键的array2中输入。

javascript reactjs
1个回答
0
投票

您可以遍历array2中的每个对象并添加从array1中获取的数字值

const array1 = [{
	key1: 7,
	key2: 1,
	key3: 37,
 }];

 const array2 = [
  {
      title: 'Some Title 1',
      key: 'key1',
      number: '',
      icon: '../../assets/some2.png'
  },
  {
      title: 'Some Title 2',
      key: 'key2',
      number: '',
      icon: '../../assets/some1.png'
  },
  {
      title: 'Some Title 3',
      key: 'key3',
      number: '',
      icon: '../../assets/some3.png'
  },
];

array2.forEach(e => e.number = array1[0][e.key]);
console.log(array2)

0
投票

您可以通过将key作为键来映射新数组。

const
    require = () => undefined;
    array1 = [{ key1: 7, key2: 1, key3: 37 }],
    array2 = [{ title: 'Some Title 1', key: 'key1', number: '', icon: require('../../assets/some2.png') }, { title: 'Some Title 2', key: 'key2', number: '', icon: require('../../assets/some1.png') }, { title: 'Some Title 3', key: 'key3', number: '', icon: require('../../assets/some3.png') }],
    result = array2.map(o => Object.assign({}, o, { number: array1[0][o.key] }));

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.