从两个数组中检索值

时间:2019-02-23 11:02:21

标签: javascript json

我有两个数组。

  • STUD = [{"id":1,"name":"Kida"},{"id":2,"name":"Kidb"},{"id":3,"name":"Kidc"},{"id":4,"name":"Kidd"},{"id":5,"name":"Kide"}]
  • IDCRD = [{"id":3,"status":"Y"},{"id":4,"status":"Y"},{"id":2,"status":"N"},{"id":5,"status":"Y"},{"id":1,"status":"N"}]

然后我有一个循环:

for(var i=0;i<STUD.length;i++){
    var id = STUD[i][0];
    var name = STUD[i][1];
    var status = ? 
}

我需要STUD[i]数组中IDCRD的状态在此循环内具有相同的ID。

3 个答案:

答案 0 :(得分:0)

在IDCRD上有另一个循环,并匹配STUD和IDCRD的ID,然后获取状态

STUD = [{
  "id": 1,
  "name": "Kida"
}, {
  "id": 2,
  "name": "Kidb"
}, {
  "id": 3,
  "name": "Kidc"
}, {
  "id": 4,
  "name": "Kidd"
}, {
  "id": 5,
  "name": "Kide"
}];
IDCRD = [{
  "id": 3,
  "status": "Y"
}, {
  "id": 4,
  "status": "Y"
}, {
  "id": 2,
  "status": "N"
}, {
  "id": 5,
  "status": "Y"
}, {
  "id": 1,
  "status": "N"
}];
  for (var i = 0; i < STUD.length; i++) {
    var id = STUD[i].id;
    var name = STUD[i].name;
    for (j = 0; j < IDCRD.length; j++) {
      if (STUD[i].id == IDCRD[j].id) {
        var status = IDCRD[j].status;
      }
    }
    console.log(id, name, status);
  }

答案 1 :(得分:0)

函数Array应该可以满足您的需求

Map

或者如果您与Node一起运行,您可以编写

status

答案 2 :(得分:0)

您可以使用Map并使用id作为密钥并获取地图以方便地访问IDCRD的数据。

var stud = [{ id: 1, name: "Kida" }, { id: 2, name: "Kidb" }, { id: 3, name: "Kidc" }, { id: 4, name: "Kidd" }, { id: 5, name: "Kide" }],
    IDCRD = [{ id: 3, status: "Y" }, { id: 4, status: "Y" }, { id: 2, status: "N" }, { id: 5, status: "Y" }, { id: 1, status: "N" }],
    map = IDCRD.reduce((m, o) => m.set(o.id, o), new Map),
    result = stud.map(o => Object.assign({}, o, map.get(o.id)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

另一种解决方案可能是使用Array#find,但是这种方法会为要查找的每个项目迭代数组。

var stud = [{ id: 1, name: "Kida" }, { id: 2, name: "Kidb" }, { id: 3, name: "Kidc" }, { id: 4, name: "Kidd" }, { id: 5, name: "Kide" }],
    IDCRD = [{ id: 3, status: "Y" }, { id: 4, status: "Y" }, { id: 2, status: "N" }, { id: 5, status: "Y" }, { id: 1, status: "N" }],
    result = stud.map(o => Object.assign({}, o, IDCRD.find(({ id }) => id === o.id)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关问题