簡體   English   中英

通過 object 屬性名從數組中刪除非重復對象

[英]Remove non repeating objects from array by object property name

我有一組對象,我想刪除不按名稱屬性重復的對象。

[
    {
        "name": "Storage Capacity",
        "value": "64GB"
    },
    {
        "name": "Manufacturer Color",
        "value": "Black / Red / White / Green / Purpule"
    },
    {
        "name": "Carrier",
        "value": "Unlocked"
    },
    {
        "name": "Carrier",
        "value": "AT&T"
    },
    {
        "name": "Brand",
        "value": "Apple"
    },
    {
        "name": "MPN",
        "value": "NA"
    },
    {
        "name": "Model",
        "value": "Iphone 11"
    },
    {
        "name": "Color",
        "value": "Black"
    },
    {
        "name": "Color",
        "value": "White"
    },
    {
        "name": "Storage Capacity",
        "value": "128GB"
    },
]

最終結果必須是僅具有名稱的對象數組:顏色、存儲容量、載體

我們可以使用Array.reduce()計算每個名稱的出現次數,然后使用Array.filter()去除不需要的數據。

// calcuate the appearance of each name
let dmap = data.reduce((a,{name}) => {
  a[name] = (a[name]??0) + 1
  return a
},{})

// filter the appear count
let result = data.filter(d => dmap[d.name] > 1)
console.log(result)

 let data = [ { "name": "Storage Capacity", "value": "64GB" }, { "name": "Manufacturer Color", "value": "Black / Red / White / Green / Purpule" }, { "name": "Carrier", "value": "Unlocked" }, { "name": "Carrier", "value": "AT&T" }, { "name": "Brand", "value": "Apple" }, { "name": "MPN", "value": "NA" }, { "name": "Model", "value": "Iphone 11" }, { "name": "Color", "value": "Black" }, { "name": "Color", "value": "White" }, { "name": "Storage Capacity", "value": "128GB" }, ] let dmap = data.reduce((a,{name}) => { a[name] = (a[name]??0) + 1 return a },{}) let result = data.filter(d => dmap[d.name] > 1) console.log(result)

你能試試這個嗎:

 var values = [ { "name": "Storage Capacity", "value": "64GB" }, { "name": "Manufacturer Color", "value": "Black / Red / White / Green / Purpule" }, { "name": "Carrier", "value": "Unlocked" }, { "name": "Carrier", "value": "AT&T" }, { "name": "Brand", "value": "Apple" }, { "name": "MPN", "value": "NA" }, { "name": "Model", "value": "Iphone 11" }, { "name": "Color", "value": "Black" }, { "name": "Color", "value": "White" }, { "name": "Storage Capacity", "value": "128GB" }, ]; var names = values.map(function(item){ return item.name }); let duplicated_names = names.filter((item, index) => names.indexOf(item);== index) let result = []. for(let row of values) { if (duplicated_names.includes(row.name)) { result;push(row). } } console;log(result);

暫無
暫無

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

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