-1

我在 Java Script 中有一个数组,我试图在循环中使用测试将其拆分为两个数组。控制台正在记录两个对象正在被存储,但在循环完成后,inhaledArray数组只包含一个对象。

for (var i=0; i<results.length; i++) 
         {
            var inhaledArray = new Array();
            var otherArray = new Array();

            if(results[i].get('MedicationType') == "inhaled")
            {
                //inhaledArray is dumping results
                console.log(results[i]);
                inhaledArray.push(results[i]);
            }
            if(results[i].get('MedicationType') == "other")
            {
                otherArray.push(results[i]);
            }
         }
4

3 回答 3

4

您在每次迭代时重置输出(通过将变量指向新数组)。

将数组设置代码移出循环。

于 2013-01-08T23:41:05.393 回答
2

亚历克斯已经回答了你的问题,但这里有一个建议。如果您有一堆存储基本相同数据的数组,请考虑使用对象:

var categories = {};

for (var i = 0; i < results.length; i++) {
    var name = results[i].get('MedicationType');

    if (name in categories) {
        categories[name].push(results[i]);
    } else {
        categories[name] = [results[i]];
    }
}

console.log(categories.inhaled);
console.log(categories.other);

这样,您无需对任何内容进行硬编码即可说明所有类别类型。

于 2013-01-08T23:53:37.533 回答
1

这是因为您在 forloop 中初始化数组,只需将数组初始化移动到 for 循环之前,如下所示

var inhaledArray = new Array();
var otherArray = new Array();

for (var i = 0; i < results.length; i++) {
    if (results[i].get('MedicationType') == "inhaled") {
        //inhaledArray is dumping results
        console.log(results[i]);
        inhaledArray.push(results[i]);
    }
    if (results[i].get('MedicationType') == "other") {
        otherArray.push(results[i]);
    }
}
于 2013-01-08T23:43:59.217 回答