有這樣一個陣列:
[
{ message: '12949', author: 'esP' },
{ message: '1609', author: 'user' },
{ message: '1613', author: 'adm' },
{ message: '12949', author: 'Mdr' },
{ message: '12949', author: 'rood' }
]
怎么保證訊息不重復,作者寫的用逗號隔開:
[
{ message: '12949', author: 'esP, Mdr, rood' },
{ message: '1609', author: 'user' },
{ message: '1613', author: 'adm' }
]
我以這種方式檢查唯一性:
const _ = require('underscore');
let a = _.uniq(arr, x => x.message)
接下來做什么?創建第二個回圈并比較值?
uj5u.com熱心網友回復:
我們可以使用Array.reduce()來獲得所需的結果。
我們將每個專案添加到映射物件(累加器),使用訊息值作為鍵,然后使用Object.values()回傳我們想要的結果陣列:
const arr = [ { message: '12949', author: 'esP' }, { message: '1609', author: 'user' }, { message: '1613', author: 'adm' }, { message: '12949', author: 'Mdr' }, { message: '12949', author: 'rood' } ];
const result = Object.values(arr.reduce((acc, { message, author }) => {
if (!acc[message]) {
acc[message] = { message, author };
} else {
acc[message].author = `, ${author}`;
}
return acc;
}, {}));
console.log('Result:', result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
const data = [
{ message: '12949', author: 'esP' },
{ message: '1609', author: 'user' },
{ message: '1613', author: 'adm' },
{ message: '12949', author: 'Mdr' },
{ message: '12949', author: 'rood' }
]
const result = [];
for (const item of data) {
const index = result.findIndex(d => d.message === item.message);
if (index === -1) {
result.push(item);
} else {
result[index].author = `, ${item.author}`;
}
}
console.log(result);
uj5u.com熱心網友回復:
一種擁有臨時陣列并message在已找到時更新它的簡單方法。或串聯author其他:
var original = [
{ message: '12949', author: 'esP' },
{ message: '1609', author: 'user' },
{ message: '1613', author: 'adm' },
{ message: '12949', author: 'Mdr' },
{ message: '12949', author: 'rood' }
]
var result = [];
for (let data of original) {
let existingResult = result.find(obj => obj.message == data.message);
if (existingResult)
existingResult.author = ", " data.author;
else
result.push(data)
}
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/377609.html
標籤:javascript
上一篇:如何在wordpress自定義休息路由回呼中將代碼分離到另一個函式?
下一篇:使用onmouseover()制作了一個display:block但我無法點擊它,因為一旦我將滑鼠移開它就會因為onmouseout()而消失
