检查对象中是否存在排除特定属性的数组

时间:2019-02-04 18:22:47

标签: javascript arrays

有没有一种方法可以在排除一个属性的同时检查对象是否存在于数组中?我不知道对象中将存在哪些属性,因此无法手动比较属性。

基于以下代码,我想检查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

2 个答案:

答案 0 :(得分:0)

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

df_local.columns = ['observation_id', 'local_id', 'local_min', 'local_max']
df = pd.merge(df_global, df_local, on = 'observation_id', how = 'outer')

答案 1 :(得分:0)

像这样使用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 a k/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