通过循环迭代附加文本

时间:2015-01-14 22:35:43

标签: javascript arrays for-loop iteration

我不确定为什么我很难用这个。我认为它可能会在当天迟到但是 -

我将数据库值拉入数组。当前数组是:[1,3]。然后我逐步遍历数组并在值中添加前缀(在本例中为"& Plantkey ="),以使最终字符串的格式为:

&安培; Plantkey = 1&安培; Plantkey = 3

到目前为止,这是我的代码:

if (array[a].ParameterName == "Plantkey") {
        var plantKey = array[a].ParameterValue;
        var plantTemp = [];
        plantTemp = plantKey.split(",");


        for (var p = 0; p < plantTemp.length; p++) {
            var plantKeyString = ("&Plantkey=" + plantTemp[p]);


        }

    }

我只得到最后一个数组值(&amp; Plantkey = 3)。使用javascript,它并不像我实例化&#34; var plantKeyString&#34;并添加&#34; + =&#34;运营商。如果我在for循环上面实例化数组,就像这样:

    var plantKeyString;
    for (var p = 0; p < plantTemp.length; p++) {
        plantKeyString += ("&Plantkey=" + plantTemp[p]);


    }

然后我最终得到一个更长的字符串,包括我想要的数组值,但它也会引入&#34; undefined&#34;它在开头找到的值,如下所示:

未定义&安培; Plantkey = 1&安培; Plantkey = 3

我可以很容易地找到&#34; undefined&#34;并删除它,但我确定问题在于循环迭代,而不是数据,显然。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:3)

您在第一种情况下只得到最后一个值的原因是因为您为每个循环重新声明一个新的plantKeyString因此只保留最后一个声明。

使用第二个解决方案只需执行以下操作即可:

    var plantKeyString="";
    for (var p = 0; p < plantTemp.length; p++) {
        plantKeyString += ("&Plantkey=" + plantTemp[p]);


    }

您在最终结果开头获得undefined的原因是因为&#39; plantKeyString&#39;是不确定的&#39;因为你没有给它一个值。在javascript中,所有变量都是undefined,直到你给它们一个值。所以在我提供的解决方案中,您只是用空字符串实例化它。

答案 1 :(得分:2)

您可以简单地使用数组join()方法完成此操作,并首先添加&Plantkey=,如下所示:

var plantKeyString = '&Plantkey=' + array.join('&Plantkey=');

对于[1,3]数组,此代码会生成您期望的内容:&Plantkey=1&Plantkey=3,请尝试使用此代码示例:

var array = [1,3];
var plantKeyString = '&PlantKey=' + array.join('&PlantKey=');
alert(plantKeyString);

See join() description here