如何从两个非对称数组中创建一个对象数组?

亚伦·厄德温

我现在被困了一整天,不能再进一步了。我知道,我错过了一件小事,但就是找不到。

我有两个数组:

arrKeys = ["a", "b", "c"]
arrValues = [ 1, 2, 3, 4, 5, 6, 7, 8, 9]

我想得到一个对象数组,看起来像:

myObj = [
 {
  "a": 1,
  "b": 2,
  "c": 3
 },
 {
  "a": 4,
  "b": 5,
  "c": 6
 },
 {
  "a": 7,
  "b": 8,
  "c": 9
 }
]

我试图做类似的事情:

const myObj = arrKeys.reduce((newObj, key, index) => {
  if (arrValues[index] == undefined) arrValues[index] = null
  newObj[key] = aarValues[index]
  return newObj
}, {})
cosnole.log(myObj)

但问题是,arrKeys它只循环一次,我不知道如何“重置”计数器每次arrKeys达到最大长度。我也只得到了一个对象,而不是一个对象数组:

我的结果

myObj = {
  "a": 1,
  "b": 2,
  "c": 3
 }

任何想法都真的很受欢迎。

内纳德·弗拉卡尔

您可以使用模运算符来检查每个keys.length第 n 个元素,然后通过切片开始是当前索引和结束当前索引 + keys.length 的值数组来添加一个新对象

const f = (keys, values) => values.reduce((r, e, i) => {
  if (i % keys.length === 0) {
    const index = i / keys.length
    r[index] = values.slice(i, i + keys.length).reduce((r, e, i) => {
      r[keys[i]] = e
      return r
    }, {})
  }

  return r
}, [])

console.log(f(["a", "b", "c"], [1, 2, 3, 4, 5, 6, 7, 8, 9]))
console.log(f(["a", "b", "c", 'g'], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
console.log(f(["a", "b"], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从vanilla JS中的两个对象数组创建一个新的对象数组

如何使用一个共享密钥从两个对象数组创建一个对象数组 - JavaScript

如何从PHP中的两个常规数组创建一个数组

从两个数组创建一个JavaScript对象

相交两个对象数组,然后从两个对象数组创建一个新数组

结合两个json数组作为mysql中的键值并创建一个json对象

如何从两个创建一个新数组并根据原始数组中的值初始化新数组

如何从对象数组中创建一个新数组?

如何从两个单独的数组中创建具有两个键/值对的对象

如何将两个对象数组合并到一个大数组中

如何比较两个不同的数组并根据键从一个数组中删除对象?

我如何从一个包含对象的大型数组中获得两个分离的数组?

从两个数组创建一个多维数组

如何在 JavaScript 中将两个不同的数组转换为一个对象数组

如何从两个不同的 numpy 数组创建一个 numpy 数组?

合并数组中的两个对象,其中值是一个数组

匹配两个不同的数组并在python中创建一个新数组

从两个简单数组中创建一个多维数组

如何创建一个映射出使用流在Java中两个数组的?

将两个对象中的数组合并为一个对象内联

如何在一个reducer中合并两个对象,同时合并一个子文件,它是一个数组

从两个不同数组中的对象创建对象

如何将两个不同的数组放在一个数组中

如何将两个数组合并为一个对象数组

一个对象包含两个数组。如何匹配所有数组的ID?

如何从两个数组和一个浮点值创建单个 numpy 特征数组?

如何基于两个数组创建一个数组

使用两个数组中的公共元素创建一个新数组

如何将两个Firebase集合合并到一个新的对象数组中