我想了解如何從不.reduce包含重復項的陣列中回傳。
我擁有的陣列很特別:
['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999']
具體來說,陣列內部的字串由2個識別符號組成,例如
- JJ2AG -> 這標識了該人與哪一組人有關
- 001099 -> 這標識了那個人的 id
所以我最初需要的是在沒有的情況下拆分陣列的元素,-所以結果如下:
[0: JJ2AG, 1: 001099]
然后我應該檢查每個專案newArry是否0是唯一的,因此,我應該只有一個陣列:
['JJ2AG', 'JJ3AG', 'JJ4AG']
所以最后一個陣列只包含一次0如上所述的每個專案的部分
我嘗試使用 reduce,但無法弄清楚如何擁有這個新陣列,并且我不能根據我的要求使用for和forEach回圈,所以到目前為止我在代碼段中所做的事情,但我不知道如何創建一個新的我需要的陣列
['JJ2AG', 'JJ3AG', 'JJ4AG']
const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999'];
const x = ids.reduce(( acc, item) => {
console.log('ACC', acc);
console.log('ITEM', item);
const splited = item.split('-');
console.log(splited);
const groupId = splited[0];
console.log(groupId);
return acc.includes(groupId) ? [splited] : [...acc, item];
}, []);
console.log(x)
uj5u.com熱心網友回復:
由于您似乎使用的是現代 JavaScript,因此您實際上可以為此使用 Set :
const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999'];
const x = [...new Set(ids.map(id => id.split("-")[0]))]
console.log(x)
Set 從陣列中獲取唯一元素,因此首先,將所有 id 映射到字串 ( id.split("-")[0]) 的第一部分,將其轉換為集合,然后使用 spread 將其轉換回陣列。
uj5u.com熱心網友回復:
只是改變:
return acc.includes(groupId) ? [splited] : [...acc, item];
至:
return acc.includes(groupId) ? acc : [...acc, groupId];
每當找到重復項時,您基本上都會取消以前的唯一 ID,而是使用[groupId];回傳重復項。相反,您應該回傳不變的唯一 ID。您還必須附加到唯一 ID 的陣列groupIdnot item。請看下面的演示:
const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999'];
const x = ids.reduce(( acc, item) => {
//console.log('ACC', acc);
//console.log('ITEM', item);
const splited = item.split('-');
//console.log(splited);
const groupId = splited[0];
//console.log(groupId);
return acc.includes(groupId) ? acc : [...acc, groupId];
}, []);
console.log(x)
你也可以寫成...
顯示代碼片段
const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999'];
const x = ids.reduce(
( acc, item) =>
acc.includes(item.split('-')[0]) ? acc : [...acc, item.split('-')[0]]
, []
);
console.log(x);
uj5u.com熱心網友回復:
您可以使用 aSet或使用普通物件并根據需要添加鍵。這是一個使用reduce.
Object.keys(ids.reduce((acc, current)=> { acc[current.split("-")[0]]=true; return acc}, {}))
它的作用是向物件添加鍵,如果您遇到現有鍵也沒關系。最后,您需要蓄電池的鑰匙,這就是Object.keys發揮作用的地方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482996.html
標籤:javascript 数组
