我有
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];
我该怎么做?
答案 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
}
});