簡體   English   中英

如何在 javascript 中檢查數組是否包含這兩個對象

[英]How to how check an array contains these two objects in javascript

我想檢查文檔正面和背面 object 是否存在於數組中。 如果正面和背面 object 都存在,則將文檔設置為 true,或者如果僅存在正面,則將文檔設置為 false

const [document, setDocument] = useState('');

let data = [
  { id: 1, type:'document', frontBack:'front'},
  { id: 2, type:'pan', frontBack:'front'},
  { id: 3, type:'profile', frontBack:'front'},
  { id: 4, type:'document', frontBack:'back'},
];

您可以使用以下代碼檢查data是否具有frontBack:'front'

data.find(({type, frontBack})=> type == 'document' && frontBack == 'front')

您可以使用以下代碼檢查data是否有frontBack:'back'

data.find(({type, frontBack})=> type == 'document' && frontBack == 'back')

如果兩個表達式都返回一個 object,那么你就有了。
如果它們中的任何一個返回undefined ,你就不會。

您可以使用數組 object 的some方法,如果某些元素通過給定的測試,則返回true

 let data = [{ id: 1, type: 'document', frontBack: 'front' }, { id: 2, type: 'pan', frontBack: 'front' }, { id: 3, type: 'profile', frontBack: 'front' }, { id: 4, type: 'document', frontBack: 'back' }, ]; let out = data.some(d => d.type == "document" && d.frontBack == "front") && data.some(d => d.type == "document" && d.frontBack == "back"); console.log(out);

 let data = [ { id: 1, type:'document', frontBack:'front'}, { id: 2, type:'pan', frontBack:'front'}, { id: 3, type:'profile', frontBack:'front'}, { id: 4, type:'document', frontBack:'back'}, ]; const values = ['front', 'back']; // values to check const filteredData = data?.filter((record) => record?.type === 'document')?.map(filteredRec => filteredRec?.frontBack); // type wise filtered data console.log(values.every((value) => filteredData.includes(value))); // if this returns `true` then set `setDocument` to `true`

有多種方法可以解決此問題,但您可以使用.some()方法來檢查是否滿足上述條件。

setDocument(data.some(item=>item.frontBack === 'front') && data.some(item=>item.frontBack === 'back'))

如果可迭代對象中的一個或多個項目返回 true, .some() back true,因此我們正在檢查front是否都存在,並使用條件&&我們可以判斷這兩個項目是否存在並相應地設置 state。 您還可以通過將邏輯運算結果提取到單獨的變量中來使代碼更易於理解,如下所示:

const res = data.some(item=>item.frontBack === 'front') && data.some(item=>item.frontBack === 'back')

setDocument(res)

我試圖以盡可能簡單的方式寫出來。 我不確定您要設置哪個變量,所以我使用了一個名為 setDoc 的變量:

 //const [document, setDocument] = useState(''); let data = [ { id: 1, type:'document', frontBack:'front'}, { id: 2, type:'pan', frontBack:'front'}, { id: 3, type:'profile', frontBack:'front'}, { id: 4, type:'document', frontBack:'back'}, ]; let setDoc, front, back = false data.forEach(obj => { if(obj.type === 'document' && obj.frontBack === 'front') { front = true } if(obj.type === 'document' && obj.frontBack === 'back') { back = true } }) setDoc = front && back console.log(setDoc)

暫無
暫無

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

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