我有一個看起來像這樣的資料陣列。
data = [
{ "name": "Apple", "type": "Fruit"},
{ "name": "Cabbage", "type": "Vegetable"} ,
{ "name": "Orange", "type": "Fruit"}
]
我想過濾掉它type已經存在的元素。我想保留第一個元素。
例如,保留蘋果而不是橙色
data = [
{ "name": "Apple", "type": "Fruit"},
{ "name": "Cabbage", "type": "Vegetable"}
]
uj5u.com熱心網友回復:
使用Array#filter,您可以在更新陣列的同時迭代陣列Set以跟蹤添加的型別:
const data = [ { "name": "Apple", "type": "Fruit"}, { "name": "Cabbage", "type": "Vegetable"}, { "name": "Orange", "type": "Fruit"} ];
const typeSet = new Set();
const res = data.filter(({ type }) => {
if(typeSet.has(type)) return false;
typeSet.add(type);
return true;
});
console.log(res);
uj5u.com熱心網友回復:
1)如果結果type在dictusingfilter和Setas 中不存在,您可以過濾結果:
data.filter((o) => (dict.has(o.type) ? false : dict.add(o.type, true)))
const data = [
{ name: "Apple", type: "Fruit" },
{ name: "Cabbage", type: "Vegetable" },
{ name: "Orange", type: "Fruit" },
];
const dict = new Set();
const result = data.filter((o) => (dict.has(o.type) ? false : dict.add(o.type, true)));
console.log(result)
2)您還可以使用for..of和Set作為:
const data = [
{ name: "Apple", type: "Fruit" },
{ name: "Cabbage", type: "Vegetable" },
{ name: "Orange", type: "Fruit" },
];
const dict = new Set(), result = [];
for (let o of data) {
if (!dict.has(o.type)) {
result.push(o);
dict.add(o.type);
}
}
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359722.html
標籤:javascript 打字稿
