gpt4 book ai didi

javascript - 根据唯一组合将包含对象的数组拆分为多个数组

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

我有这样一个数据集:

var dataset = [
{time: "t1", locA: "a1", locB: "b1", value: v1},
{time: "t1", locA: "a1", locB: "b2", value: v2},
{time: "t1", locA: "a2", locB: "b1", value: v3},
{time: "t1", locA: "a2", locB: "b2", value: v4},
{time: "t2", locA: "a1", locB: "b1", value: v5},
{time: "t2", locA: "a1", locB: "b2", value: v6},
{time: "t2", locA: "a2", locB: "b1", value: v7},
{time: "t2", locA: "a2", locB: "b2", value: v8},
....
];

我想要这样的结果:

var a1b1 = [ 
{loc: "a1b1", time: "t1", value: "v1"},
{loc: "a1b1", time: "t2", value: "v5"},
....
];
var a1b2 = [
{loc: "a1b2", time: "t1", value: "v2"},
{loc: "a1b2", time: "t2", value: "v6"},
....
];
var a2b1 = [
{loc: "a2b1", time: "t1", value: "v3"},
{loc: "a2b1", time: "t2", value: "v7"},
....
];
var a2b2 = [
{loc: "a2b2", time: "t1", value: "v4"},
{loc: "a2b2", time: "t2", value: "v8"},
....
];

重要的是 t 值在表示时间时的顺序正确。我不能使用库,只能使用老式 JavaScript。我发现了一些关于拆分对象数组的较旧的 SO 帖子,但它们描述的只是简单的拆分或使用库。

是否有可能像forEach一样

dataset.forEach(function()...

感谢任何帮助..

最佳答案

另一个简短的 Array.prototype.reduce() 方法:

var dataset = [
{time: "t1", locA: "a1", locB: "b1", value: "v1"}, {time: "t1", locA: "a1", locB: "b2", value: "v2"}, {time: "t1", locA: "a2", locB: "b1", value: "v3"},
{time: "t1", locA: "a2", locB: "b2", value: "v4"}, {time: "t2", locA: "a1", locB: "b1", value: "v5"}, {time: "t2", locA: "a1", locB: "b2", value: "v6"}, {time: "t2", locA: "a2", locB: "b1", value: "v7"}, {time: "t2", locA: "a2", locB: "b2", value: "v8"}
];

var result = dataset.reduce(function(r, o){
var k = o.locA + o.locB; // unique `loc` key
if (r[k] || (r[k]=[])) r[k].push({loc:k, time: o.time, value: o.value});
return r;
}, {});

console.log(result);

关于javascript - 根据唯一组合将包含对象的数组拆分为多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043262/

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