通过循环迭代追加文本

Appending text through 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]);


        }

    }

我只得到最后一个数组值 (&Plantkey=3)。使用 javascript,它不喜欢我实例化 "var plantKeyString" 并添加“+=”运算符。如果我在 for 循环上方实例化数组,如下所示:

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


    }

然后我得到一个更长的字符串,包括我想要的数组值,但它也引入了它在开头找到的 "undefined" 值,所以它看起来像这样:

undefined&Plantkey=1&Plantkey=3

我可以很容易地找到 "undefined" 并将其删除,但我确定问题显然出在循环迭代上,而不是数据上。

如有任何帮助,我们将不胜感激!谢谢!

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

对于第二种解决方案,只需执行以下操作即可:

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


    }

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

你可以简单地使用数组 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