按属性值从对象数组中获取 JavaScript 对象

2022-08-29 22:05:36

假设我有一个由四个对象组成的数组:

var jsObjects = [
   {a: 1, b: 2}, 
   {a: 3, b: 4}, 
   {a: 5, b: 6}, 
   {a: 7, b: 8}
];

有没有办法通过属性的值(例如,在没有循环的情况下)来获取第三个对象()?{a: 5, b: 6}bfor...in


答案 1

Filter属性与值匹配的对象数组返回数组:

var result = jsObjects.filter(obj => {
  return obj.b === 6
})

请参阅 Array.prototype.filter() 上的 MDN 文档

const jsObjects = [
  {a: 1, b: 2}, 
  {a: 3, b: 4}, 
  {a: 5, b: 6}, 
  {a: 7, b: 8}
]

let result = jsObjects.filter(obj => {
  return obj.b === 6
})

console.log(result)

Find否则返回数组中第一个元素/对象的值。undefined

var result = jsObjects.find(obj => {
  return obj.b === 6
})

请参阅 Array.prototype.find() 上的 MDN Docs

const jsObjects = [
  {a: 1, b: 2}, 
  {a: 3, b: 4}, 
  {a: 5, b: 6}, 
  {a: 7, b: 8}
]

let result = jsObjects.find(obj => {
  return obj.b === 6
})

console.log(result)

答案 2
jsObjects.find(x => x.b === 6)

来自 MDN:

find() 方法返回数组中的值,如果数组中的某个元素满足提供的测试函数。否则返回。undefined


旁注:旧版浏览器(如IE)不支持像箭头函数这样的方法,所以如果你想支持这些浏览器,你应该使用Babel转译你的代码。find()