如何通过了解对象中另一个属性的值来检索属性的值

How would I retrieve a property's value by knowing another property's value in an object?

本文关键字:属性 检索 另一个 何通过 了解 对象      更新时间:2023-09-26

如果可能的话,我不想使用jQuery。我在寻找什么:

var obj = [
  {
    name: "Sam",
    Job: "Developer"
  },
  {
    name: "Mike",
    Job: "Brother"
  } 
];
var testing = obj[name == sam].job // testing equals "Developer"

您正在寻找 Array.filter:

var obj = [
 {
  name: "Sam",
  Job: "Developer"
 },
 {
  name: "Mike",
  Job: "Brother"
 } 
]    
var testing = obj
  .filter(function(person) { 
    return person.name == 'Sam'
  }).map(function(person) { 
    return person.Job
  })

控制台.log(测试)

或者,如果您知道自己对第一个感兴趣:

var obj = [
 {
  name: "Sam",
  Job: "Developer"
 },
 {
  name: "Mike",
  Job: "Brother"
 } 
]    
var testing = obj
  .filter(function(person) { 
    return person.name == 'Sam'
  })    var obj = [
 {
  name: "Sam",
  Job: "Developer"
 },
 {
  name: "Mike",
  Job: "Brother"
 } 
]    
var testing = obj
  .filter(function(person) { 
    return person.name == 'Sam'
  })
console.log(testing[0] && testing[0].Job)

最后但并非最不重要的一点是:如果您知道您只有一个匹配项,您可以执行以下操作:

var testing = obj.filter(function(p) { return p.name == 'Sam'; })[0].Job

因此,您不能像编写的那样简单地做到这一点,但您可以过滤并找到所需的内容。我把它变成了一个通用函数,使可重用性更容易:

function getArrObjPropertyValue(arr, searchProperty, searchCompare, returnProperty) {
  return arr.filter(function(item) {
    return item[searchProperty] === searchCompare;
  })[0][returnProperty];
}
console.log(getArrObjPropertyValue(obj, 'name', 'Sam', 'Job')); // Developer

将对象的键与分配值分开进行比较,如下所示:

var people = [
  {
    name: "Sam",
    Job: "Developer"
  },
  {
    name: "Mike",
    Job: "Brother"
  } 
];
var testing = null;
for (var person in people) {
  if (people[person].name === 'Sam') { testing = people[person].job; }
}