簡體   English   中英

javascript 檢查數組是否包含多個具有完全相同屬性的元素

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

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