首页 > 解决方案 > 如何将多维数组转换为对象中的arr

问题描述

你能解释一下如何将这个二维数组转换为数组并且在数组中有对象的逻辑,这里是输入:

const arr = [
["Tony", "a", "b"],
["Sara", "c", "z"]
           ];

如何将它们转换为:

obj = [
{
 name:"Tony", 
 first:"a", 
 second:"b"
},
{
 name:"Sara", 
 first:"c", 
 second:"z"
}
   ]

我们应该临时创建 2 个对象吗?将它们放入数组中,如何循环?我们可以只使用一次性循环吗?以及如果第一个或第二个 2d 数组长度与第一个或第二个 2d 不同,
我很想知道这个方法,如果你不介意解释一下,我喜欢你们都不要为此使用 ES6 :),所以我知道逻辑

标签: javascriptarraysobjectfor-loopmultidimensional-array

解决方案


使用Array.map(). 在地图的回调中,使用数组解构将值提取到变量中,然后使用简写属性名称创建对象:

const arr = [["Tony", "a", "b"], ["Sara", "c", "z"]];

const result = arr.map(([name, first, second]) => ({
  name,
  first,
  second
}));

console.log(result);

如果您不想使用,您可以使用循环Array.map()构建一个:for...of

const map = (arr, cb) => {
  const r = [];
  
  for(const item of arr) {
    r.push(cb(item));
  }
  
  return r;
};

const arr = [["Tony", "a", "b"], ["Sara", "c", "z"]];

const result = map(arr, ([name, first, second]) => ({
  name,
  first,
  second
}));

console.log(result);


推荐阅读