如何检查数组是否具有具有特定属性的对象,然后找到该属性?

我有一个数组,看起来像这样:


var arr = [

  {name: "Joe", id: "p01"}

];

我想首先检查输入是否与具有相同属性的任何内容匹配。例如,如果用户输入“Steven”,我希望它检查名称为“Steven”的任何对象。name


其次,我想得到他们输入的任何东西,如果存在的话。id


抱歉,如果这是一个很大的要求。


DIEA
浏览 155回答 4
4回答

慕尼黑5688855

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/findconst 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/filterconst items = arr.filter(item => item.name === 'Joe');//items = [{name: "Joe", id: "p01"}]//to get the list of ids with conditionconst ids = arr.reduce((results, obj) => { if (obj.name === "Joe") results.push(obj.id);}, [])//ids = ["p01"]//one line solutionconst { id } = arr.find(item => item.name === 'Joe') || {};

沧海一幻觉

它也可以做到。filtervar 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);

哆啦的时光机

你可以这样做,希望这会帮助你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);

神不在的星期二

const foundItem = arr.find(item => item.name === searchQuery) // searchQuery = Stevenif (foundItem === -1) {  console.log("Item not found")} else {  console.log("Item found", foundItem)  console.log("Item id: ", fountItem.id)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript