繁体   English   中英

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

[英]How to convert array to array of objects?

我有

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];

我该怎么做?

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

 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);

注意:这个答案假设水果和它对应的饮料在数组中总是彼此相邻。 如果项目乱序,这将给出错误的答案。

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

 const result = [];

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM