[英](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.