首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据属性值分隔值并使用javascript显示

问根据属性值分隔值并使用javascript显示
EN

Stack Overflow用户
提问于 2019-02-21 16:26:34
回答 1查看 95关注 0票数 1

我有一个看起来像这样的数组:

代码语言:javascript
复制
var array = [[
    { "loc": {} },
    { "distance": 6.4 },
    { "zip1": "06120" },
    { "zip2": "06095" },
    { "group": 1 },
    { "weight": 1119 }
], [
    { "loc": {} },
    { "distance": 6.41 },
    { "zip1": "06095" },
    { "zip2": "06120" },
    { "group": 2 },
    { "weight": 41976 }
], [
    { "loc": {} },
    { "distance": 6.41 },
    { "zip1": "06095" },
    { "zip2": "06120" },
    { "group": 1 },
    { "weight": 41976 }
]];

现在,我想根据在HTML中显示的属性值来获取数组的值。预期输出被拆分到具有"group“属性的数组中。我还需要在HTML中使用基于组进行存储,如下面的示例所示:

代码语言:javascript
复制
group 1:
  all zip1's under group 1
group 2:
  all zip1's under group 2 

我试着使用循环,但我没有得到正确的答案:

代码语言:javascript
复制
for (var k = 0; k < array.length; k++) {
    var array1 = array[k];    
    if (flag[array1[2]["zip1"]]) continue;
    flag[array1[2]["zip1"]] = true;
    output2.push(array1);
}

因此,请帮助我找到拆分的数组显示在HTML与组明智

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 16:34:59

使用reduce,您可以创建一个对象,其中每个group值作为键,一个zip1数组作为值,如下所示:

然后循环遍历Object.entries,以创建:

​

代码语言:javascript
复制
const array = [[{"loc":{}},{"distance":6.4},{"zip1":"06120"},{"zip2":"06095"},{"group":1},{"weight":1119}],[{"loc":{}},{"distance":6.41},{"zip1":"06095"},{"zip2":"06120"},{"group":2},{"weight":41976}],[{"loc":{}},{"distance":6.41},{"zip1":"06095"},{"zip2":"06120"},{"group":1},{"weight":41976}]];

const merged = array.reduce((r, a) =>{
  const { group } = a.find(n => n.group)
  const { zip1 } = a.find(n => n.zip1)
  r[group] = r[group] || []
  r[group].push(zip1)
  return r;
},{})

const output = document.getElementById('output');

Object.entries(merged).forEach(([group, zips]) => {
  const h1 = document.createElement('h1');
  h1.innerHTML = "group " + group
  
  const span = document.createElement('span');
  span.innerHTML = `Zip1 - ${zips} (in group - ${group})`;
  
  output.appendChild(h1)
  output.appendChild(span)
})
代码语言:javascript
复制
<div id="output"></div>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54802407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档