添加两个数组的元素 - 最好的方法

时间:2015-03-17 13:44:41

标签: javascript jquery

var a = "1:2:3:4";
var b = "0:1:5:2";

我想到最后:

var c = "1:3:8:6"; 

意思是,数字按列相加。

我的解决方案是:

var i, k;
var a_arr = a.split(':');
var b_arr = b.split(':');
for (i=0;i<a_arr.length;i++){
   and here again another loop over b_arr
}
好吧,我没有解决方案..最可爱的方法是什么?

6 个答案:

答案 0 :(得分:5)

根据我的评论,您可以使用i索引两个数组:

var i, k;
var a_arr = a.split(':');
var b_arr = b.split(':');
var c_arr = [];
for (i=0;i<a_arr.length;i++){
    c_arr.push(parseInt(a_arr[i], 10) + parseInt(b_arr[i], 10));
}

//And use join to get the final result
var c = c_arr.join(":");

答案 1 :(得分:5)

您可以映射它并返回添加的值吗?

var a = "1:2:3:4";
var b = "0:1:5:2";
    
var c = a.split(':').map(function(x, i) {
    return (+x) + (+b.split(':')[i]);
}).join(':');

document.body.innerHTML = '<pre>' + c + '</pre>';

或在地图外分割

var c = (function(y) {
    return a.split(':').map(function(x, i) {
        return (+x) + (+y[i]);
    }).join(':')
})(b.split(':'));

答案 2 :(得分:3)

您可以使用索引i添加简单地使用join()

&#13;
&#13;
var a = "1:2:3:4";
var b = "0:1:5:2";
var c = [];
var i, k;
var a_arr = a.split(':');
var b_arr = b.split(':');
for (i=0;i<a_arr.length;i++){
   c[i] = parseInt(a_arr[i], 10) + parseInt(b_arr[i], 10);  //Add using index
}
console.log(c.join(':')); //Use Join
&#13;
&#13;
&#13;

答案 3 :(得分:3)

http://jsfiddle.net/fLavfcjz/1/

使用.map()并且不要忘记parseInt(),否则这些数字将被视为字符串。

var a = "1:2:3:4";
var b = "0:1:5:2";

var arrayA = a.split(':');
var arrayB = b.split(':');

var combinedArr = arrayA.map(function (v, i) {
    return parseInt(v,10) + parseInt(arrayB[i],10); // or return (+v) + (+arrayB[i]);
});

console.log(combinedArr.join(':')); //1:3:8:6

答案 4 :(得分:2)

试试这个

var a = "1:2:3:4";
var b = "0:1:5:2";

var a_arr = a.split(':');
var b_arr = b.split(':');

var c_arr = [];

for (i in a_arr) {
    var to_add = 0;
    if (b_arr[i] != undefined) to_add = b_arr[i];

    c_arr[i] = a_arr[i] + to_add;
}

答案 5 :(得分:1)

您不需要第二个循环。以下代码段的结果数组将具有较短输入数组的长度。

var a = '1:2:3:4'
var b = '0:1:5:2'

var aArray = a.split(':')
var bArray = b.split(':')
var result = []

for (
  var i = 0, aLength = aArray.length, bLength = bArray.length;
  i < aLength && i < bLength;
  i++
) {
  result.push(Number(a[i]) + Number(b[i]))
}

result = result.join(':')

console.log(result)