如何将数组转换为对象数组?

时间:2018-02-22 17:18:37

标签: javascript

我有

let array = ['mango', 'mango_shake','banana', 'banana_shake', 'cherry', 'cherry_shake', 'Strawberry', 'Strawberry_shake', ...n];

我想做的是:

let target = [{'fruit': 'mango', 'drink': 'mango_shake'}, 
{'fruit': 'banana', 'drink': 'banana_shake'}, ...n];

我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以简单地遍历数组并创建一个像这样的对象数组

let array = ['mango', 'mango_shake', 'banana', 'banana_shake', 'cherry', 'cherry_shake', 'Strawberry', 'Strawberry_shake'];
var res = [];

for (var i = 0; i < array.length; i = i + 2) {
  var ob = {};
  ob.fruit = array[i];
  ob.drink = array[i + 1];
  res.push(ob);
}

console.log(res);

注意:这个答案假设水果及其相应的饮料总是在阵列中彼此相邻。如果项目出现故障,这将给出错误的答案。

答案 1 :(得分:0)

只需迭代原始数组,直到它为空并取出对并将它们映射到对象:

 const result = [];

 while(array.length)
   result.push((([fruit, drink]) => ({fruit, drink}))(array.splice(0, 2));

(如果这是你的作业:我认为向你的老师解释它是如何工作的,而不仅仅是自己尝试它会更难:)

答案 2 :(得分:0)

您可以遍历数组以合并所有其他项

let target = {};
array.forEach( (curr, indx, arr) => {
    if (indx %2 == 1) {
        target[arr[indx-1]] = curr
    }
});