gpt4 book ai didi

Javascript 使用 map() 和 Iterator 将对象数组分成多个数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:20 25 4
gpt4 key购买 nike

  1. 基本上我有一个像这样的对象数组

    var array = [{x: 10, y: 5, r: 10, ...} ]

对象中有更多字段,但就这一点而言,这是我发现将字段分隔为数组的方式:

var x = array.map(obj => obj.x);
var y = array.map(obj => obj.y);
// and so on for each field

有效,但随着字段数量和数组大小的增加,效率似乎非常低,因为这会多次扫描数组。我可以使用标准循环,但我更喜欢 map() 因为我认为在这种情况下它更具可读性。是否可以从 map 返回多个值?我认为是这样的:

var [x, y] = array.map(obj => [obj.x, obj.y]); // should output two arrays

或任何类似的可读性(reduce 是 IMO 的可读性较差)。

  1. 我确实注意到一些较新的 javascript 函数,例如 array.entries(),它返回一个迭代器对象。我该如何实现这些功能?

最佳答案

您可以减少数组并迭代对象键/值对。然后将值推送到给定属性的数组。

var array = [{ x: 10, y: 5, r: 10 }, { x: 11, y: 6, r: 11 }],
result = array.reduce((r, o) => {
Object.entries(o).forEach(([k, v]) => (r[k] = r[k] || []).push(v));
return r;
}, Object.create(null));

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

关于Javascript 使用 map() 和 Iterator 将对象数组分成多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54011113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com