簡體   English   中英

檢查對象中是否存在排除特定屬性的數組

[英]Check if object exists in array excluding specific property

有沒有一種方法可以在排除一個屬性的同時檢查對象是否存在於數組中? 我不知道對象中將存在哪些屬性,因此無法手動比較屬性。

基於以下代碼,我想檢查obj存在於arr不包括prop3

例:

const obj = {
  "prop1": "value1",
  "prop2": "value2"
}

const arr = [{
    "prop1": "value1",
    "prop2": "value2",
    "prop3": "value3"
  },
  {
    "prop1": "value4",
    "prop2": "value5",
    "prop3": "value6"
  }
]

arr.indexOf(obj) > -1; // returns false, need something like this that returns true

使用Array.findIndex()方法查找索引:

const keys = Object.keys(obj);
arr.findIndex((o) => {
  return keys.every(k => o[k] && o[k] === obj[k])
});

像這樣使用Array.findIndexObject.keysArray.every的組合:

 const obj = { "prop1": "value1", "prop2": "value2" } const arr = [{ "prop1": "value1", "prop2": "value2", "prop3": "value3" }, { "prop1": "value4", "prop2": "value5", "prop3": "value6" } ] const index = arr.findIndex(item => { // For every item of array: // - Iterate over obj keys // - If every k/v pair of obj matches ak/v pair of item // then it's a match return Object.keys(obj).every(key => item[key] === obj[key]) }) console.log(index) 

盡管如果只是想知道它是否存在,則應該使用Array.some而不是Array.findIndex

暫無
暫無

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

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