可以通过什么方式操纵该对象以重新排列值。
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
但这不会输出所需的输出。
答案 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