如何将多个值分配给一个数组并将其添加?
问题描述:
我已经实现了这个,但是因为我不熟悉FOR循环语句,所以我按照下面的方式完成了这个操作! 你能帮我缩短这段代码吗?使用FOR循环语句并解释我是如何工作的!由于如何将多个值分配给一个数组并将其添加?
这里是我的代码:
var inputs = new Array();
inputs["a"] = document.getElementById("a").value;
inputs["b"] = document.getElementById("b").value;
inputs["c"] = document.getElementById("c").value;
inputs["d"] = document.getElementById("d").value;
inputs["e"] = document.getElementById("e").value;
然后我将他们添加了如:
var inputsvalue = inputs["a"] + inputs["b"] + inputs["c"] + inputs["d"] + inputs["e"];
请注意,我将每个输入字段的值,并将其分配到一个变量!
例如可以说该值输入字段A,B,C,d,e为如下:
1,2,3,4,5
因此,我希望它们被分配到变量“inputsvalue”就像:
var inputsvalue = "12345";
这就是为什么我加入他们那样!那么有没有其他方法可以做到这一点!在这个例子中,我只有5个输入字段,但是如果有大约100个输入字段呢!
这个问题的目的是学习如何FOR循环语句在这个例子中的作品!
在此先感谢! :)
答
// Too bad you can't use reduce.
inputs.reduce(function(a,b){
return a.concat(b);
})
// If you could use reduce, you could use map, as well.
var sum= 'abcde'.split('').map(function(itm){
return document.getElementById(itm).value;
}).reduce(function(a, b){
return a.concat(b);
});
alert(sum)
/* New browsers include map and reduce-
you can add them to older browsers,
but it might make your for in loops break,
if you use for in loops to iterate arrays.
*/
if(!Array.prototype.map){
Array.prototype.map= function(fun, scope){
var T= this, L= T.length, A= Array(L), i= 0;
if(typeof fun== 'function'){
while(i< L){
if(i in T){
A[i]= fun.call(scope, T[i], i, T);
}
++i;
}
return A;
}
}
}
if(!Array.prototype.reduce){
Array.prototype.reduce= function(fun, temp, scope){
var T= this, i= 0, len= T.length, temp;
if(typeof fun=== 'function'){
if(temp== undefined) temp= T[i++];
while(i < len){
if(i in T) temp= fun.call(scope, temp, T[i], i, T);
i++;
}
}
return temp;
}
}
+0
谢谢!我会试试这个...非常感谢你的帮助! :) A +++ – 2011-05-15 12:06:16
答
您可以使用
var elems = document.getElementsByTagName("input");
var sum = '';
for(i=0; i<elems.length; i++) {
sum = sum + elems[i].value;
}
alert(sum); // to check your result
答
var inputsValue = "";
for (var i = 0; i < inputs.length; i++){
inputsValue += inputs[i];
}
答
一个更好的办法来做到这一点是命名每个输入的ID是这样的:id="element0"
,或一般为:
这种方式,你可以去:
var sum = 0;
for (i=0; i<max; i++){
var elements = document.getElementById("element" + i);
sum += Number(elements.value);
}
这不是t你感兴趣的是什么,但我认为获得'12345''部分的更快方法是只执行'var inputsvalue = inputs.join('');' – sdleihssirhc 2011-05-15 05:04:06
谢谢帕特里克,是的,我不感兴趣这样做就好像有人看我的代码一样,它肯定会笑! :)))我刚刚开始学习JS,这需要很长时间才能学习,希望到明年夏天结束! :))我至少会知道JS的基本概念! – 2011-05-15 12:04:24