這是我的陣列。如何洗掉此類結構中的重復項?當我映射 arr 時,我得到每個物件中嵌套的每個陣列的值。我想過濾重復的值。當前輸出:bye hello hello 預期的輸出應該是:bye hello
[
{
arr: ['']
val: "string"
}
{
arr: ['bye', 'hello']
val: "string"
}
{
arr: ['hello']
val: "string"
}
]
myArray.map(item => item.arr.map((el, index) =>
<p key={index}>{el}</p>
))
uj5u.com熱心網友回復:
我希望它會幫助你:
const filteredArray = useMemo(() => {
const used = []
return myArray.map(sub => {
return { ...sub, arr:sub.arr.map(el
=> {
if(used.includes(el) return null
used.push(el)
return el
}}
})
}, deps)
然后在 JSX 中:
filteredArray.map(() => ...)
uj5u.com熱心網友回復:
您可以簡單地管理一個陣列來過濾您想要顯示的內容:
import React from 'react';
import { render } from 'react-dom';
import './style.css';
const App = () => {
const data = [
{
arr: [''],
val: 'string',
},
{
arr: ['bye', 'hello'],
val: 'string',
},
{
arr: ['hello'],
val: 'string',
},
];
const buildData = () => {
const passedValues = [];
return data.map((item) => {
return item.arr.map((el) => {
if (!passedValues.includes(el)) {
passedValues.push(el);
return <div>{el}</div>;
}
});
});
};
return <div>{buildData()}</div>;
};
render(<App />, document.getElementById('root'));
這是StackBlitz 上的重現。
uj5u.com熱心網友回復:
所有這些答案都很好......我認為@vitaliyirtlach 擁有最好的,因為它最接近 React。
我只是把它放在那里,你也可以回圈myArray,洗掉重復項,Set然后將它們放在一個可以回圈的陣列中:
const myArray = [
{
arr: [''],
val: "string"
},
{
arr: ['bye', 'hello'],
val: "string"
},
{
arr: ['hello'],
val: "string"
}
]
const removeDupes = () => {
const newArr = []
myArray.map(item => item.arr.map((el, index) =>
newArr.push(el)
))
return [...new Set(newArr)]
}
const loopArray = removeDupes();
console.log(loopArray)// logs ["","bye","hello"]
loopArray.map((el, index) =>
<p key={index}>{el}</p>
))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/441052.html
標籤:javascript 数组 反应 排序 重复
上一篇:按名稱對串列中的物件進行排序,名稱以dart中的搜索字串開頭
下一篇:按列輕松排序串列2D
