繁体   English   中英

如何使用.map从对象数组创建数组数组?

[英]How to create an array of arrays, from an array of objects using .map?

给出以下代码:

var data = [];
for (let i = 0; i <2; i++) {
  data.push({
    "a": "1",
    "b": "2"
  });
}

console.log(data);

data.map((el) => {
  var row = Object.keys(el).map(key => el[key]);
  console.log(row);
  return row;
});

console.log(data);

为什么这不产生数组数组,例如:

[
  ["1", "2"],
  ["1", "2"]
]

这是一个CodePen: http ://codepen.io/24ma13wg/pen/MbbQZr

差不多了。 您需要存储Array#map的结果。

 var data = [], result; for (let i = 0; i <2; i++) { data.push({ "a": "1", "b": "2" }); } result = data.map(el => Object.keys(el).map(key => el[key])); // ^^^^^ missing assignment console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

如果要更新阵列,则应手动进行:

 var data = []; for (let i = 0; i <2; i++) { data.push({ "a": 2*i, "b": 2*i+1 }); } console.log(data); data.forEach((el,i,arr) => { arr[i] = Object.keys(el).map(key => el[key]); }); console.log(data); 

还可以考虑使用ES2017的Object.values

data = data.map(Object.values);

暂无
暂无

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

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