【问题标题】:How to get same id different values in javascript json array object如何在javascript json数组对象中获取相同的id不同的值
【发布时间】:2019-05-25 16:59:49
【问题描述】:

如何在javascript json数组对象中获取相同的id不同的值并将其推送到数组中。

这是实际的 json 数据,

var data = [{
        "areaid": 25,
        "wardid": 5
    },
    {
        "areaid": 24,
        "wardid": 5
    },
    {
        "areaid": 23,
        "wardid": 5
    },
    {
        "areaid": 22,
        "wardid": 5
    },
    {
        "areaid": 21,
        "wardid": 4
    },
    {
        "areaid": 20,
        "wardid": 4
    },
    {
        "areaid": 19,
        "wardid": 4
    },
    {
        "areaid": 18,
        "wardid": 3
    },
    {
        "areaid": 17,
        "wardid": 3
    },
    {
        "areaid": 16,
        "wardid": 3
    }];

我想要的输出, 对于wardid:3

    [{
        "areaid": 18
    },{
        "areaid": 17
    },{
        "areaid": 16
    }]

对于病房ID:4

    [{
        "areaid": 21
    },{
        "areaid": 20
    },{
        "areaid": 19
    }]

【问题讨论】:

  • 请向我们展示您的尝试。 Stack Overflow 不是代码编写服务,但我们非常乐意帮助您让您的解决方案发挥作用。
  • filter + map 是一种简单的方法
  • 对于那些花时间回答的人,我是否建议您解释一下您的答案,以便 OP 和未来的访问者可以学到一些有用的东西?尽管就目前的问题而言,似乎不值得回答,因为 OP 没有表现出解决问题的努力。

标签: javascript arrays javascript-objects


【解决方案1】:

只需使用 data[i].wardid 从简单的for loop 中检索病房 ID,然后将同一 ID 与任何值进行比较,然后再检索同一对象的区域 ID 值。

在下面的代码 sn-p 中,我将搜索到的 Ward ID 的相应区域 ID 附加到一个新数组以及一个 div 以更好地说明代码。查看代码片段jsFiddle,了解以下代码的工作原理:

/* JavaScript */
var val = document.getElementById("val");
var btn = document.getElementById("btn");
var output = document.getElementById("output");
var outPutArray = [];

function checkId(){
  outPutArray = [];
  output.innerHTML = `<p>The following wards have that ID:</p>`;
  if(!val.value) {
    alert('Please input ID');
  } else {
  	
    for(i=0; i < data.length; i++) {
    	if(data[i].wardid == val.value) {
        var x = {};
        x.warid = data[i].wardid;
        x.areaid = data[i].areaid;   
        outPutArray.push(x);
      	output.innerHTML += `<div>Area ${data[i].areaid}</div>`;
      }
    }
    console.log(outPutArray);
  }  
}

btn.addEventListener("click", checkId);

var data = [{"areaid":25,"wardid":5},{"areaid":24,"wardid":5},{"areaid":23,"wardid":5},{"areaid":22,"wardid":5},{"areaid":21,"wardid":4},{"areaid":20,"wardid":4},{"areaid":19,"wardid":4},{"areaid":18,"wardid":3},{"areaid":17,"wardid":3},{"areaid":16,"wardid":3}];
<!-- HTML -->
<input type="number" id="val" min="3" max="5" name="wardId" />
<button id="btn">
Check Id
</button>
<div id="output">
<p>
The following Areas have that Ward ID:
</p>
</div>

【讨论】:

  • 感谢@AndrewL 的回复。
  • @kranthikumarTelu 我已经对解决方案进行了更多编辑,以返回一个新数组,其中包含与 ID 匹配的对象以及渲染 div。新数组已登录到控制台,以便您查看。
猜你喜欢
  • 2020-07-26
  • 1970-01-01
  • 2013-02-14
  • 2021-04-26
  • 2019-10-07
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多