如何遍历对象数组并检查名称是否存在?

时间:2018-11-01 18:48:30

标签: javascript jquery arrays object

我有大约500条记录的对象数组。我想循环遍历对象数组,并检查对象名称是否等于元素之一。这是我的对象数组的示例:

data = [
      {
        "row": 23,
        "code": "ERT"
      },
      {
        "row": 45,
        "code": "TTR"
      },
      {
        "row": 90,
        "code": "CXZ"
      }
    ];

这是我到目前为止尝试过的:

data.some(function (obj) {
    if(obj.name === "code"){
        return obj[name]; // Return value if name exists
    }
});

我想检查name是否存在于对象中。如果是,请拉取该名称的值。我的代码将在控制台中产生undefined。有人可以帮忙吗?有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则可以通过.filter()来解决此问题,对于每个要过滤的项目,您都要检查项目的键(通过Object.keys()),以查看其中是否包含任何您要搜索/过滤的键:

var namesToCompare = ['name', 'code'];

var data = [
      {
        "row": 23,
        "code": "ERT"
      },
      {
        "row": 45,
        "code": "TTR"
      },
      {
        "row": 90,
        "code": "CXZ"
      },
      {
        "row": 91,
        "code": "ABC", 
        "name" : "code"
      }
    ];
    
var result = data
.filter(item => Object
    .keys(item)
    .find(key => namesToCompare.includes(key)))

console.log('items with keys', namesToCompare, 'in list', result);

答案 1 :(得分:1)

类似的东西:

data = [
      {
        "row": 23,
        "code": "ERT"
      },
      {
        "row": 45,
        "code": "TTR"
      },
      {
        "row": 90,
        "code": "CXZ"
      }
    ];


$.each(data, function(index,v) {
 $.each(v, function(key,val) {
    if(key == "code")
       console.log(val)
    }
 });
});

没有内循环:

for (var key in data){

  if(key == "code"){
     console.log(key)
  }
}

答案 2 :(得分:1)

您可以执行以下操作:

const name = "code";
const data = [
      {
        "row": 23,
        "code": "ERT"
      },
      {
        "row": 45,
        "code": "CXZ"
      },
      {
        "row": 90,
        "code": "TTR"
      },
      {
        "row": 190,
        "code": "CXZ"
      }
    ];

const values = [];

data.forEach(element => {
	if (Object.keys(element).includes(name)) {
  	values.push(element[name]);
  }
});
    
console.log(values);

Object.keys捕获对象的所有键,然后在这些键中搜索“名称”。