重新排列对象中的其他两个键

时间:2018-08-13 08:51:51

标签: javascript object

可以通过什么方式操纵该对象以重新排列值。

let obj = [
  {foo: 10, bar: 20},
  ["apple"],
  {foo: 30, bar: 40},
  ["pear"],
  {foo: 50, bar: 60},
  ["orange"]
]

// The output should be: 
// { "apple": { foo: 10, bar: 20 }, "pear": {...}, "orange": {...} }

我已经尝试过此处提供的解决方案:loop and combine every two items

但这不会输出所需的输出。

3 个答案:

答案 0 :(得分:3)

使用for loop

let obj = [{foo: 10, bar: 20},["apple"],{foo: 30, bar: 40},["pear"],{foo: 50, bar: 60},["orange"]];

var result = {};
for(let i = 0; i < obj.length; i+= 2) {
  result[obj[i+1][0]] = obj[i];
}
console.log(result);

答案 1 :(得分:2)

您可以使用.reduce将此数组简化为一个对象。参见下面的逻辑。

let obj = [{foo: 10, bar: 20},["apple"],{foo: 30, bar: 40},["pear"],{foo: 50, bar: 60},["orange"]];

const arr = obj.reduce((a, el, i, arr) => {
  if(el instanceof Array){
    a[el[0]] = arr[i-1];
  }
  return a;
}, {});

console.log(arr);

答案 2 :(得分:1)

您可以使用array.reduce:

sudo apt-get install php7.0-curl