export default function App() {
const [arrays, setArrays] = useState([]);
const initArray = [
{ id: 2023, solveTF: false, rightTF: false },
{ id: 2025, solveTF: false, rightTF: false },
];
setArrays(initArray);
const idArrays = [2022,2023,2025,2027];
const idSearch = () => {
for (let i = 0; i < idArrays.length; i++) {
let idArray = idArrays[i]
let newArray = arrays.filter((item) => item.id == idArray).map();
console.log(newArray);
}};
return (
<View style={styles.container}>
<TouchableOpacity onPress={() => idSearch()}>
<Card>
<AssetExample />
</Card>
</TouchableOpacity>
</View>
);
}
我想检查数组中是否存在idArrays中的值。如果没有,我想向数组中添加一个新对象。我做错了什么,该怎么办?
我曾在snack.expo.dev工作。发生[最小化反应错误#301]。
初始化useState
内部的状态以避免不需要的重新应答。
对于您想要的,最好在filter
中使用some
来检查不在arrays
中的id,然后使用setArrays
为每个不在中的id添加一个新对象。
export default function App() {
// Initialize inside useState
const [arrays, setArrays] = useState([
{ id: 2023, solveTF: false, rightTF: false },
{ id: 2025, solveTF: false, rightTF: false },
]);
const idArrays = [2022, 2023, 2025, 2027];
const idSearch = () => {
const notExistInArrays = idArrays.filter(id => !arrays.some(item => item.id === id));
setArrays(prevArrays => [
...prevArrays,
...notExistInArrays.map(id => ({ id, solveTF: false, rightTF: false }))
]);
};
return (
<View style={styles.container}>
<TouchableOpacity onPress={() => idSearch()}>
<Card>
<AssetExample />
</Card>
</TouchableOpacity>
</View>
);
}