【问题标题】:Iterate multiple arrays into object using javascript使用javascript将多个数组迭代到对象中
【发布时间】:2020-03-11 21:50:23
【问题描述】:

我有多个数组,第一个包含键,其他包含值。

Array[
  "name",
  "surname",
  "city",
  "age"
],
Array[
  "John",
  "Doe",
  "San Francisco",
  "27"
],
Array[
  "Nancy",
  "Doe",
  "New York",
  "15"
],
Array[
  "Maria",
  "Doe",
  "Texas",
  "30"
],

我想将数组合并成这样的对象:

{
  "name": "John"
  "surname": "Doe"
  "city": "San Francisco"
  "age": "27"
},
{
  "name": "Nancy"
  "surname": "Doe"
  "city": "New York"
  "age": "15"
},
{
  "name": "Maria"
  "surname": "Doe"
  "city": "Texas"
  "age": "30"
}

由于数组的长度、键和值可以改变,我该如何使用js呢?

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 提示:你可能想遍历第一个数组的Object.keys(...)
  • 你有可以循环遍历另一个数组中的值的数组吗?
  • 您想要的结果不是一个对象,而是 3 个不同的对象。你是说对象数组吗?
  • @curiousdev Object.keys() 用于对象,为什么要在数组上使用它?

标签: javascript arrays loops object


【解决方案1】:

您可以通过将第一个数组作为键迭代并从值部分获取实际值来映射值部分并创建新对象。

var data = [["name", "surname", "city", "age"], ["John", "Doe", "San Francisco", "27"], ["Nancy", "Doe", "New York", "15"], [ "Maria", "Doe", "Texas", "30"]],
    result = data
        .slice(1)
        .map(a => Object.fromEntries(data[0].map((k, i) => [k, a[i]])));

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

【讨论】:

  • 我刚刚在nodejs中添加了Object.fromEntries = data => Object.assign({}, ...Array.from(data, ([k, v]) => ({[k]: v}) )); Object.fromEntries is not supported.
【解决方案2】:

您的数组存在语义错误。

//This is your Array in JS:

let array = [
  ["name", "surname", "city", "age"],
  ["John", "Doe", "San Francisco", "27"],
  ["Nancy", "Doe", "New York", "15"],
  ["Maria", "Doe", "Texas", "30"]
];

//we need to sepparete keys and values
const keys = array.shift(); // ["name", "surname", "city", "age"]

//now array has just values and keys has the first item of an array

let arrOfObjects = array.map(item => {
  let obj = {};
  for (i = 0; i < item.length; i++) {
    obj[keys[i]] = item[i];
  }
  return obj;
});
console.log(arrOfObjects);

控制台:

[ { “姓名”:“约翰”, “姓”:“母鹿”, “城市”:“旧金山”, “年龄”:“27” }, { “名称”:“南希”, “姓”:“母鹿”, “城市”:“纽约”, “年龄”:“15” }, { “名称”:“玛丽亚”, “姓”:“母鹿”, “城市”:“德克萨斯”, “年龄”:“30” } ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2019-02-27
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多