簡體   English   中英

(Lodash)是否有一種方法可以檢查集合中是否存在(嵌套)相同的對象?

[英](Lodash) Is there a method to check if an identical object exists (nested) in a collection?

我想知道是否有Lodash的方法來解決這個問題,否則我會用for循環來解決。 如果collection包含一個或多個嵌套對象與c相同的元素,我想返回true

以下示例將返回true因為collection[1]包含相同的c

針:

c = {
  x: 11,
  y: 22,
  z: 33
}

草垛:

collection = [
  {
    a: 1,
    b: 1,
    c: {
      x: 10,
      y: 20,
      z: 30
    },
    d: 1
  },
  {
    a: 1,
    b: 1,
    c: {
      x: 11,
      y: 22,
      z: 33
    },
    d: 1
  },
  {
    a: 1,
    b: 1,
    c: {
      x: 12,
      y: 24,
      z: 36
    },
    d: 1
  }
]

這與諸如如何用lodash進行2個對象之間的深度比較之類的問題不同 因為我需要檢查是否有任何收集項包含嵌套在其中的相同對象,所以不比較兩個對象是否彼此相同。

在此先感謝您的幫助。

您可以在遞歸函數中使用_.isEqual

 function find(h, n) { if (_.isEqual(h, n)) return true; let found; if (Array.isArray(h)) { for (let e of h) { found = find(e, n); if (found) return found; } } else if (h instanceof Object) { return find(Object.values(h), n); } return false; } var c = { x: 11, y: 22, z: 33 }; var d = { x: 1111, y: 2222, z: 32223 }; var collection = [{ a: 1, b: 1, c: { x: 10, y: 20, z: 30 }, d: 1 }, { a: 1, b: 1, c: { x: 11, y: 22, z: 33 }, d: 1 }, { a: 1, b: 1, c: { x: 12, y: 24, z: 36 }, d: 1 } ]; console.log(find(collection, c)); console.log(find(collection, d)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script> 

暫無
暫無

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

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