gpt4 book ai didi

Javascript:在对象中分组数据

转载 作者:行者123 更新时间:2023-11-30 16:12:15 25 4
gpt4 key购买 nike

我正在尝试找出用 Javascript 组织这些数据的最佳方式,所以如果这个问题比平时更广泛,我深表歉意。

我有数据:

State, Zip
"CA", "945"
"CA", "934"
"MA", "934"
"MA", "021"
"MA", "021"
etc.

我正在尝试创建某种 Javascript 数组,我可以引用它来获取特定 State 中的所有 Zip

这个引用可能看起来像:

State: "CA", Zip:["945", "934"]
State: "MA", Zip:["934", "021", "021"]

这有意义吗?类似的东西是否适用于 javascript?

我想这样做是因为在极少数情况下,一个 3 位数的 Zip 会存在于两个 State 中(如上例所示)。


我正在玩下面的代码,但它不起作用。

var stateArray = [],
var zipMapper = [];

for (var i = 0; i < data.length; i++){
if (_.contains(stateArray,data[i].state) == false) {
stateArray.push(data[i].state)
zipMapper.push({state: data[i].state, zips: []})
zipMapper[data[i].state].zips.push(data[zip])
} else {
zipMapper[data[i].state].zips.push(data[zip])
}
}

最佳答案

我建议将数据结构更改为可以快速访问状态及其 Zip 的版本。

{
"CA": [
"945",
"934"
],
"MA": [
"934",
"021",
"021"
]
}

要从 CA 获取 zip,只需使用 grouped.CAgrouped['CA']

您建议的解决方案在找到状态数据之前始终需要进行交互。它使访问变慢。

var data = [{ State: "CA", Zip: "945" }, { State: "CA", Zip: "934" }, { State: "MA", Zip: "934" }, { State: "MA", Zip: "021" }, { State: "MA", Zip: "021" }],
grouped = function (array) {
var r = {};
array.forEach(function (a) {
r[a.State] = r[a.State] || [];
r[a.State].push(a.Zip);
});
return r;
}(data);


document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');

关于Javascript:在对象中分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069213/

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