Как проверить, есть ли в массиве объект с определенным свойством, а затем найти это свойство? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть массив, который выглядит примерно так:

var arr = [
  {name: "Joe", id: "p01"}
];

Сначала я хочу проверить, соответствует ли ввод чему-либо с тем же свойством name. Например, если пользователь вводит «Стивен», я хочу, чтобы он проверял наличие любого объекта с именем «Стивен».

Во-вторых, я хочу получить id того, что он ввел, если он существует .

Извините, если это большой вопрос.

Ответы [ 5 ]

0 голосов
/ 27 мая 2020

Это можно сделать и через filter.

var arr = [
  {name: "Joe", id: "p01"},
  {name: "Steve", id: "p02"},
  {name: "Smith", id: "p01"},
];



console.log(arr.filter(i=>i.name.includes('Ste')))
   var ids = arr.filter(i=>i.name.includes('Ste')).map(k=>k.id);
console.log(ids);
0 голосов
/ 26 мая 2020

Чтобы получить список id совпадающих элементов:

var arr = [
     {name: "Joe", id: "p01"},
     {name: "Bob", id: "p02"},
     {name: "Joe", id: "p03"},
];
let input = "Joe";
let list = [];
for(let i = 0; i < arr.length; i++){
     if(arr[i].name == input){
          list.push(arr[i].id)
     }
}
console.log(list)
0 голосов
/ 26 мая 2020
const foundItem = arr.find(item => item.name === searchQuery) // searchQuery = Steven

if (foundItem === -1) {
  console.log("Item not found")
} else {
  console.log("Item found", foundItem)
  console.log("Item id: ", fountItem.id)
}
0 голосов
/ 26 мая 2020

Вы можете сделать так, Надеюсь, это вам поможет

let arr = [
  {name: "Joe", id: "p01"}
];

let searchQuery = 'Joe'
let finalResult = arr.find(({name}) => name.includes(searchQuery));
finalResult = (finalResult && finalResult.id) ? finalResult.id :"No Match Found"
console.log(finalResult);
0 голосов
/ 26 мая 2020
const arr = [
  {name: "Joe", id: "p01"}
];

//need to find array item where object.name is Joe - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
const obj = arr.find(item => {
    //item = {name: "Joe", id: "p01"}
    return item.name === 'Joe'
});

//obj = {name: "Joe", id: "p01"}
//check if item exists and return id value;
const id = obj && obj.id;

//to filter array and get only items where name is Joe - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
const items = arr.filter(item => item.name === 'Joe');
//items = [{name: "Joe", id: "p01"}]

//to get the list of ids with condition
const ids = arr.reduce((results, obj) => {
 if (obj.name === "Joe") results.push(obj.id);
}, [])
//ids = ["p01"]

//one line solution
const { id } = arr.find(item => item.name === 'Joe') || {};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...