javascript - 将数组格式化为对象 javascript

标签 javascript

我有两个带有一些数字序列的数组(xy),两个数组的长度相同。现在我需要将两个数组的元素组合成一个对象。为了创建对象,我有一个函数f如何快速将其转换为单个对象数组

x = [1,2,3,4] 
y = [5,6,7,8]
f = function(x,y) { return { foo: x, bar: y } }
... some magic ...
result = [{ foo: 1, bar: 5},
          { foo: 2, bar: 6},
          { foo: 3, bar: 7},
          { foo: 4, bar: 8}]

当然这可以使用

const array = []
for (let i = 0; i <= x.length; i++) {
    array.push(f(x[i],y[i]))
}

但我想知道是否有更“干净”的方法?例如使用 .map ?或者这就是要走的路吗?

-编辑-谢谢大家,不知道map也可以将索引作为参数传递。

最佳答案

您可以构建一个以变量名称作为键的对象,并迭代该对象的所有条目,并将数组的索引作为结果数组的对象的索引。

这适用于任意长度的数组。

var foo = [1, 2, 3, 4],
    bar = [5, 6, 7, 8],
    result = Object
        .entries({ foo, bar })
        .reduce((r, [k, a]) => a.map((v, i) => Object.assign(r[i] || {}, { [k]: v })), []);
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将数组格式化为对象 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51798802/

相关文章:

javascript - Vue.js 简单脚本不起作用

javascript - 在三个 js 中处理 WebGL 丢失

javascript - 事件监听器删除或保留 - 最佳实践

javascript - jqGrid 分页不适用于 json 数据类型

javascript - 如何在单个播放器中播放多个 YouTube 视频。

javascript - 使用 php 循环 WordPress 的响应式框布局

javascript - 如何确保滚动后整个选项卡可见?

javascript - 如何使用指针事件覆盖 firefox 和 chrome 中的触摸缩放和平移

javascript - lodash flow 函数在 typescript 中应该怎么写?

javascript - 如何使用 mocha 和 should.js 与 sails.js 编写二进制下载测试?