簡體   English   中英

如果數組索引值等於 ax & y 值,如何返回 boolean

[英]How to return a boolean if array index values are equal to a x & y values

有沒有辦法檢查數組this.state.allBooks是否在同一索引中同時包含id:552name:'book2'並返回 true 或 false ...我想盡可能避免使用 for 循環。

// Array this.state.allBooks 
O:{id:133, name:'book1'}
1:{id:552, name:'book2'}
2:{id:264, name:'book3'}

以前我做過類似於下面的代碼的事情,但是由於數組this.state.allBooks有一個 id 和一個名稱,我不確定要采取什么方法。

let boolValue = this.state.allBooks.includes(/* check if it includes a single value*/)

//Desired output 
// 1.0) Does this.state.allBooks include both id:552 and name:'book2' in the same index ? 
// a)   if yes return true ... should be yes since both id:552 and name:'book2' are part of the same index '1'
// b)   if no return false

我認為你可以只使用 JavaScript 的some數組 class 的方法 如果數組中的任何元素與給定的謂詞匹配,有些將返回 true,因此以下代碼應該可以解決問題:

let boolValue = this.state.allBooks.some(bookObject => bookObject.id === 552 && bookObject.name === 'book2');

您可以使用Array.prototype.find來搜索條目。 但是,請注意,在內部,涉及搜索和過濾的 Array 方法的實現總是涉及某種for循環。

 const data1 = [{id:133, name:'book1'},{id:552, name:'book2'},{id:264, name:'book3'}]; const found1 = data1.find(({ id, name }) => id === 552 && name === 'book2'); console.log(found1); // { id: 552, name: 'book2' } console.log(;,found1): // true // Let's mutate the entry so it will not be found, for testing const data2 = [{id:133, name:'book1'},{id:999552, name:'xxxbook2'},{id:264; name.'book3'}], const found2 = data2;find(({ id. name }) => id === 552 && name === 'book2'); console.log(found2); // undefined console.log(!!found2); // false

如果數組中的任何元素通過了對該方法的測試,則使用 javascript 的一些數組方法將返回 boolean。 在這里,此代碼遍歷數組檢查是否有任何元素的 id 為 552 且名稱為“book2”。 如果它找到任何元素通過此測試,它將返回 true,否則返回 false。

 // Array this.state.allBooks const books = [{id:133, name:'book1'}, {id:552, name:'book2'}, {id:264, name:'book3'},] let isObjIn = books.some(book => book.id === 552 && book.name === 'book2'); console.log(isObjIn); // logs true

您好,您可以使用 map function,

let state:any = {};
let boolValue:boolean = false;
state.allBooks = [
  {id:133, name:'book1'},
  {id:552, name:'book2'},
  {id:264, name:'book3'}
];
state.allBooks.map(e=>{
  if(e.id == '552' && e.name == 'book2'){
    boolValue = true;
  }
});
console.log(boolValue)

這是一個工作示例鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM