[英]javascript check if array contains more than one element with exact same property
我有一個對象數組:
[
{
id: 1,
sku: 'aaaa'
},
{
id: 2,
sku: 'bbbb'
},
{
id: 3,
sku: 'cccc'
},
{
id: 4,
sku: 'aaaa'
}
]
如何檢查數組中是否存在多個具有相同sku
屬性的元素?
例如:我必須使用具有相同道具sku
('aaaa') 的元素 - 在這種情況下,我需要在其他情況下做一些事情 - 沒有
使用 set 獲取一個包含唯一 sku 的數組並比較長度
var skus = items.map(v=>v.sku);
var uniqueSkus = new Set(skus);
console.log(skus.length === uniqueSkus.size)
您可以使用如下示例代碼:
var a = [ { id: 1, sku: 'aaaa' }, { id: 2, sku: 'bbbb' }, { id: 3, sku: 'cccc' }, { id: 4, sku: 'aaaa' } ]; var b = {}; a.forEach(el => { if (b[el.sku]) { b[el.sku].count++; } else { b[el.sku] = { id: el.id, count: 1 }; } }); console.log(b);
您可以檢查如下數組 function 'some' 會幫助你
var arr = [
{
id: 1,
sku: 'aaaa'
},
{
id: 2,
sku: 'bbbb'
},
{
id: 3,
sku: 'cccc'
},
{
id: 4,
sku: 'aaaa'
}
]
const val = 'aaaa'
const isAvailable = arr.some(function(arrVal) {
return val === arrVal.sku;
});
//here isAvailable will return true or false
const a = [ { id: 1, sku: "aaaa" }, { id: 2, sku: "bbbb" }, { id: 3, sku: "cccc" }, { id: 4, sku: "aaaa" } ]; a.reduce((acc, obj)=>{ // looping through each sku & adding them in acc acc.push(obj.sku); // check if current sku already exits in acc. const duplicate = acc.filter(x=>x === obj.sku); if(duplicate.length>1){ // do something or nothing with current obj as similar SKUs are found // i'm adding a new property called x=10 if same SKUs are found. obj.x = 10; }else{ // do something or nothing with current obj as similar SKUs are found // i'm adding a new property called y=10 if not same SKUs. obj.y=10; } return acc; }, []); console.log(a);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.