JavaScript:查找数组中 属性 包含特定字符串的对象

JavaScript: find objects in array with property containing a specific string

在 JavaScript 中,如果您有一个格式如下的对象数组:

Persons = {
  'First Name': 'Dark',
  'Last Name': 'Defender',
  Age: 26
}

而且你需要遍历每个人才能找到姓氏中带有特定字符串的人,例如:'der'。

您将如何使用 .find() 查找和 return 姓氏中带有“der”的人?

我试过:

personArray = persons.find(({[“Last Name”]}) => “Last Name” === ‘der’);

它适用于年龄,但我似乎无法获得像“姓氏”这样的多个单词键的正确语法。

您可以使用 Array#filter 过滤掉所有这些 Last Name 包括 "der".

的条目

const arr = [
   { "First Name": 'Dark', "Last Name": 'Defender', Age: 26},
   { "First Name": 'Dark', "Last Name": 'Abc', Age: 26},
   { "First Name": 'Dark', "Last Name": 'Xyz', Age: 26},
];

const res = arr.filter(({ ["Last Name"]: name }) => name && name.includes('der'));

console.log(res);

您可以使用.filter and .indexOf来检查每个人姓氏中的子字符串:

const persons = [
  { 'First Name': 'Dark', 'Last Name': 'Defender', Age: 26},
  { 'First Name': 'Ben', 'Last Name': 'Robbins', Age: 22},
  { 'First Name': 'John', 'Last Name': 'Beans', Age: 23}
];

const personArray = persons.filter(person => 
  person['Last Name'] && person['Last Name'].indexOf('der') !== -1
);

console.log(personArray);

您可以使用 filterincludes 方法

  const persons = [
    { "First Name": "Dark", "Last Name": "Defender", Age: 26 },
    { "First Name": "Carlos", "Last Name": "Defback" },
    { "First Name": "Carlos", "Last Name": "None"}
  ];
  const foundPersons = persons.filter(person =>
    person["Last Name"].includes("Def")
  );
  console.log('foundPersons: ', foundPersons)
  

正如你所说,我们有一个这样的对象(人)数组:-

const arr = [
 { “First Name”: “Dark”, “Last Name”: “Defender”, Age: 26},
 { “First Name”: “Dark”, “Last Name”: “Defender”, Age: 26},
 .
 .
 . etc
]

// do this
const matchingObj = arr.find(el => el["Last Name"].endsWith("der")); // returns first occurence
console.log(matchingObj)