为什么JavaScript无法处理这个?

时间:2015-04-23 06:48:45

标签: javascript arrays json

所以,我花了很多时间来解决这个问题。基本上,我有这个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/

0 个答案:

没有答案