如何通过遵循对象的结构将对象推入对象数组

时间:2018-07-13 07:21:49

标签: javascript arrays loops object for-loop

这是我的对象结构

parallel -k ...

这里是另一个对象

var obj = {'name':string,'place':string};

我想把它推到合适的物体上

var arr = 
{
'a':Alpha,
'b':Australia,
'a_x':Beta,
'b_y':Canada,
'a_3':Charlie,
'b_4':China,
}

不知道如何开始迭代

请提供帮助。预先感谢

2 个答案:

答案 0 :(得分:1)

我们使用Object.values对值进行迭代;和Array.reduce建立遍历原始数据的最终数组。

const arr = {
  a: 'Alpha',
  b: 'Australia',
  a_x: 'Beta',
  b_y: 'Canada',
  a_3: 'Charlie',
  b_4: 'China',
};

const finalArray = Object.values(arr).reduce((tmp, x, xi) => {
  // only treat one on two
  if (!(xi % 2)) return tmp;

  return [
    ...tmp,

    {
      // Get the previous key value
      name: arr[Object.keys(arr)[xi - 1]],

      place: x,
    },
  ];
}, []);

console.log(finalArray);

答案 1 :(得分:1)

您可以遍历对象的值,并根据索引将对象压入数组。

const input = { 'a': 'Alpha', 'b': 'Australia', 'a_x': 'Beta', 'b_y': 'Canada', 'a_3': 'Charlie', 'b_4': 'China' },
      result = Object.values(input).reduce((r,k,i) => {
        i%2 == 0 ? r.push({name: k})  : r[Math.floor(i/2)].place = k;
        return r;
      },[]);
console.log(result);