【发布时间】:2021-01-13 20:41:42
【问题描述】:
我是 React 新手,我有服务器数据数组(简化)
let recipes = [
{"recipe": {label: "Chicken Vesuvio"},"bookmarked":false,"bought":false},
{"recipe": {label: "Chicken Paprikash"},"bookmarked":false,"bought":false},
{"recipe": {label: "Baked Chicken"},"bookmarked":false,"bought":false},
{"recipe": {label: "Chicken Liver Pâté"},"bookmarked":false,"bought":false}
]
还有一个来自localStorage的
let localRecipes = [
{"recipe": {label: "Chicken Vesuvio"},"bookmarked":true,"bought":false},
{"recipe": {label: "Chicken Paprikash"},"bookmarked":true,"bought":false},
]
我需要比较数组 1 中的 obj 是否等于数组 2 中的 obj,将第一个数组中的书签值更改为 true 并返回数组的副本。我没有任何 id,所以我使用标签进行比较。这是我的代码,它可以工作,但它不会返回副本,它会改变原始代码。
useEffect(() => {
if(recipes && recipes.length) {
for (let i = 0; i < localRecipes.length; i++) {
if(recipes[i].recipe.label == localRecipes[i].recipe.label) {
recipes[i].bookmarked = true
}
}
}
}, [isFetching])
【问题讨论】:
-
首先制作深拷贝并在for循环中使用该拷贝stackoverflow.com/a/23481096/13647574
标签: javascript reactjs deep-copy