JS上的无限循环

时间:2018-07-09 22:24:42

标签: reactjs firebase

我的代码永远停留在第二个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。

1 个答案:

答案 0 :(得分:0)

让ID为categoriesToUpdate。我假设categoriesToUpdateCategory对象的数组。所以id实际上是一个Category对象。要进行比较,应该为id.id === cat.id

您也可以尝试filter而不是第二个循环。 像

var matched = categories.filter(c => c.id === id.id)[0];

然后比较匹配。嵌套循环很难读,imo。