我的代码永远停留在第二个for
中,每步测试相同的类别并每次递减。
我有两个数组,其中一个称为categoriesToUpdate
,是我必须更新的类别的类别ID(字符串值)的列表,另一个称为categories
,包含所有数组我正在使用的实际类别数据。
我必须测试我必须更新的类别的id
值是否与数据库相同,如果是,请减小其对象的属性position
并更新数据库。但这无限减少了银行。
let newCategory;
let name;
let position;
for(let id of categoriesToUpdate) {
for(let cat of categories) {
if(id === cat.id) {
position = cat.category.category.lastPosition - 1;
name = cat.category.category.categoryName;
newCategory = {
category: {
categoryName: name,
lastPosition: position,
}
}
cRef.child(id).update(newCategory);
}
}
}
两个数组的示例:
categoriesToUpdate = ['-lGz4j77...', '-uEbKO3...', ...]
和
categories = [
{
category: {
category: {
categoryName: "name",
lastPosition: "number",
}
},
id: "category id";
},
{
...
}
]
很难解释如何获取数组,但是基本上,CategoriesToUpdate是我添加到逻辑中的ID的数组,我必须在所有这些类别中进行更新,并且category是具有所有类别的数组。数据库,来自Firebase。
答案 0 :(得分:0)
让ID为categoriesToUpdate
。我假设categoriesToUpdate
是Category
对象的数组。所以id实际上是一个Category
对象。要进行比较,应该为id.id === cat.id
。
您也可以尝试filter
而不是第二个循环。
像
var matched = categories.filter(c => c.id === id.id)[0];
然后比较匹配。嵌套循环很难读,imo。