首页 > 解决方案 > 如何知道javascript中对象的属性值?

问题描述

我有这个对象:

var x=   {
  "data": {
   "getLand": {
     "id": "xxx",
     "bid": [{
        "result": "ON",
        "buyer": {
           "username": "Dis"
        },
         "offerSet": [{
           "createdStr": "202",
           "value": 1
         }]
       },
       {
         "result": "CANCEL",
         "buyer": {
           "username": "Dis"
         },
         "offerSet": [{
           "createdStr": "202",
           "value": 15
         }]
       }
     ]
    }
  }
}

我怎么知道是result === "ON" && username == "Dis"?我试过这个:

  for (var key in x.data.getLand.bid) {
       if((x.data.getLand.bid[key].result === 'ON') && (x.data.getLand.bid[key].buyer.username.toUpperCase() === 'DIS')){
       console.log(x.data.getLand.bid[key]);
       }
  }

它给了我一些问题....有时它有效,有时它没有。你能告诉我另一种方式吗?

标签: javascriptarraysobject

解决方案


一个例子for...of

var x = { data: { getLand: { id: "xxx", bid: [ { result: "ON", buyer: { username: "Dis", }, offerSet: [ { createdStr: "202", value: 1, }, ], }, { result: "CANCEL", buyer: { username: "Dis", }, offerSet: [ { createdStr: "202", value: 15, }, ], }, ], }, }, };

for (const item of x.data.getLand.bid) {
  if (item.result === "ON" && item.buyer.username.toUpperCase() === "DIS") {
    console.log(item);
  }
}

编辑:如果需要索引,可以使用forEach.

var x = { data: { getLand: { id: "xxx", bid: [ { result: "ON", buyer: { username: "Dis", }, offerSet: [ { createdStr: "202", value: 1, }, ], }, { result: "CANCEL", buyer: { username: "Dis", }, offerSet: [ { createdStr: "202", value: 15, }, ], }, ], }, }, };

x.data.getLand.bid.forEach((item, i) => {
  if (item.result === "ON" && item.buyer.username.toUpperCase() === "DIS") {
    console.log(i);
    console.log(item);
  }
});


推荐阅读