javascript - 将 Javascript 数组组合成键值查找

标签 javascript arrays key-value

我有一个名为 Data 的 Javascript 对象,如下所示:

Object {
  zip: Array[14631],
  lat: Array[14631],
  lng: Array[14631],
  surge: Array[14631]
}

数据看起来像

Zipcode, Lat,    Lng,    Surge
10025,   47.323, -93.43, 1.7

所以要访问元素,我可以这样做: data['zip'][i] 它将返回 zip 数组的“第 ith”个元素。 我可以对所有数组执行相同的操作。

我想要的是一个我可以做的数据结构: data[10025] 它将返回其他数组中的所有匹配元素。 假设我有 5 个 zipcode = 10025 的条目,data[10025] 将返回:

10025,lat_1,lng_1,surge_1
10025,lat_2,lng_2,surge_2
10025,lat_3,lng_3,surge_3
10025,lat_4,lng_4,surge_4
10025,lat_5,lng_5,surge_5

这样我就可以进行两次迭代

for zip in data['zip']{
  for i in data[zip] {
    print data[zip]['lats'][i]
  }
}

我认为这是一个足够简单的问题,但我对 javascript 的经验不多,似乎无法理解。非常感谢任何帮助。

另一种表达方式是我想要一个看起来像这样的对象:

    data[array size of N]

该数组的每个元素包含 3 个大小为 M 的数组

最佳答案

为什么不这样做呢...

data = {
    "10025": [
        {
            "Lat": 47.323,
            "Lng": -93.43,
            "Surge": 1.7
        },{
            "Lat": 47.323,
            "Lng": -93.43,
            "Surge": 1.7
        },{
            "Lat": 47.323,
            "Lng": -93.43,
            "Surge": 1.7
        }
    ]
};

然后您可以通过 data["10025"] 访问 zip 并循环遍历位置数组。

var data = {};
for(var i = 0; i < obj.zip.length;i++){
    var zip = obj.zip[i]
    data[zip] = data[zip] || [];
    data[zip].push({
        zip: obj.zip[i],
        lat: obj.lat[i],
        lng: obj.lng[i],
        surge: obj.surge[i]
    });
}

关于javascript - 将 Javascript 数组组合成键值查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489988/

相关文章:

arrays - 创建一个数组,其中包含另一个数组中的项目之间的差异

python - 如何展开基于键值 "pairs"的 python 列表字典?

javascript - 良好的基于​​ JavaScript 的 HTML、CSS 和 JS 整理?

javascript - 在 TypeScript 中使用外部模块声明全局变量

java - 当 Java String 溢出时会发生什么?

json - 如何在openAPI JSON中指定名称不是静态的 key

java - 如何用一个键存储多个值

javascript - Internet Explorer 调试器页面加载时出现 JavaScript 错误

javascript - 使用 Javascript 将阴影添加到 InDesign 中的所有选定项目

javascript - 尝试找出动态类型时出错