所以,我花了很多时间来解决这个问题。基本上,我有这个for循环,它应该将所有独特的元素添加到一个单独的数组中。
var categories = [];
var category = {
"name": "",
"id": "",
"icon": "",
"subcategory": []
};
for (var i = 0; i < array.length; i++) {
var add = false;
for (var j = 0; j <= categories.length; j++) {
if (!objectExists(categories, array[i].zones[0].description)) {
add = true;
}
}
if (add) {
category.name = array[i].zones[0].description;
category.id = generateUUID();
category.icon = array[i].zones[0].description;
category.subcategory = [];
categories.push(category);
}
}
var objectExists = function (array, name) {
for (var i = 0; i < array.length; i++) {
if (array[i].name === name) {
return true;
}
}
return false;
};
这不起作用,因为对象category
永远不会改变不同的属性,它们将保持不变(至少在我的情况下)。如果我以这种方式在category
内创建变量if (add) { ... }
:
if (add) {
category = {
"name": "",
"id": "",
"icon": "",
"subcategory": []
};
category.name = array[i].zones[0].description;
category.id = generateUUID();
category.icon = array[i].zones[0].description;
category.subcategory = [];
categories.push(category);
}
有效。有人可以向我解释会发生什么吗?我一直试图阅读一些关于它的文献,但是找不到适合这种情况的任何文件。
这是一个显示我正在经历的小提琴。 http://jsfiddle.net/fAypL/1/