3 回答

TA貢獻1898條經驗 獲得超8個贊
因此,以下內容為您提供了所需的輸出,但我懷疑還有其他因素可能沒有考慮在內(例如,維護ID,排序等)。
鑒于:
const input = [
{id: 68, name: "IT"},
{id: 67, name: "IT"},
{id: 66, name: "Supply chain"},
{id: 65, name: "Manufacturing Engineering"},
{id: 64, name: "Sales & Marketing"},
{id: 63, name: "Research and Development"},
{id: 62, name: "Research and Development"},
{id: 61, name: "Research and Development"},
];
我們可以:
const output = [...new Set(
// Get a unique set of department names
input.map(i => i.name)
)].map(
// With the new set of department names
// Reconstruct the list with id values starting at 1 instead of 0
(dept, idx) => ({
id: idx + 1,
name: dept,
})
);

TA貢獻1777條經驗 獲得超10個贊
后來,您可以利用首先過濾掉重復值,然后相應地映射它。以下是操作方法:Map
var data = [{id: 68, name: "IT"},{id: 67, name: "IT"},{id: 66, name: "Supply chain"},{id: 65, name: "Manufacturing Engineering"},{id: 64, name: "Sales & Marketing"},{id: 63, name: "Research and Development"},{id: 62, name: "Research and Development"},{id: 61, name: "Research and Development"}];
var result1 = [...new Map(data.map(val=>[val.name, val])).values()];
var result2 = [...new Map(data.map(val=>[val.name, val])).values()].map(({id, name},i)=>({id:i+1, name}));
console.log(result1)
console.log(result2);

TA貢獻1853條經驗 獲得超9個贊
如果您使用 rxjs,則可以使用此解決方案。
this.data = [...] // array
from(this.data)
.pipe(
distinct(data => data.name),
map(data => data.name),
toArray(),
map(names => ({...names}))
).subscribe(
console.log
);
添加回答
舉報