将二维数组合并为对象数组

时间:2018-09-12 12:39:44

标签: javascript arrays object

我想知道如何合并这个二维数组

let arr[
  ['Reference', 'Price'],
  ['232323DD, 15.00]
];

我想将其转换为

[
  {name: 'Reference', value: '232323DD'},
  {name: 'Price', value: 15.00}
]

我已经尝试过了: Convert a two dimensional array into an array of objects 但这对我不起作用。

7 个答案:

答案 0 :(得分:1)

您可以映射该数组中的第一个数组,并将其值用作对象的键:

let arr = [
  ['Reference', 'Price'],
  ['232323DD', '15.00']
];

console.log(
  arr[0].map((name, i) => ({name, value:arr[1][i]}))
)

如果不确定两个数组的大小,则应首先检查它们的长度是否相等,以避免undefined

答案 1 :(得分:1)

您可以使用.map()

let [keys, values] = [
   ['Reference', 'Price'],
   ['232323DD', 15.00]
];

let result = keys.map((k, i) => ({name: k, value: values[i]}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:0)

其他解决方案,如果您不熟悉地图(我认为在此示例中使用地图会使阅读起来有些困难)...

const arr = [
  ['Reference', 'Price'],
  ['232323DD', 15.00]
]

const obj = []
arr.forEach(x => obj.push({name: x[0], value: x[1]}))

console.log(obj)

答案 3 :(得分:0)

您可以使用地图功能。它将在每个数组项上运行回调,并在新数组中返回它。

// where 'arr' is your original array
const new_arr = arr.map((item) => {

  // this is called a 'destructuring assignment'
  const [name, value] = item;

  // return the values as fields in an object
  return {name, value};

});

答案 4 :(得分:0)

const arrArr = [['Reference', 'Price'], ['232323DD, 15.00]];
const objArr = [];

for (const item of arrArr) {
    objArr.push({name: item[0], value: item[1]});
}

答案 5 :(得分:0)

let arr = [
  ['Reference', 'Price'],
  ['232323DD', '15.00']
];
    
let result = arr[0].map((key, i) => ({name: key, value: arr[1] ? arr[1][i] : null}));
console.log(result);

答案 6 :(得分:0)

我会尝试将其分解:

svn update