1

我已经将两个 JavaScript 变量定义为数组,例如:

var myMondaysImpressionsData = new Array(['2013-01-21', 2015], ['2013-01-28', 2967], ['2013-02-04', 2419], ['2013-02-11', 1311], ['2013-02-18', 1398], ['2013-02-25', 86161], ['2013-03-04', 216865], ['2013-03-11', 105252], ['2013-03-18', 141978], ['2013-03-25', 4647], ['2013-04-01', 46339], ['2013-04-08', 19920]);

和:

var myMondaysImpressionsPaidData = new Array([0], [0], [0], [0], [0], [69428], [186482], [74850], [107281], [0], [32781], [0]);

使用这种形式有点强制性,因为它是为了进一步的范围。我的问题是我想获取在第二个数组中找到的值并像这样添加它们,例如:

var example = new Array(['2013-01-21', 2015, 0], ['2013-01-28', 2967, 0], ['2013-02-04', 2419, 0], ['2013-02-11', 1311, 0], ['2013-02-18', 1398, 0], ['2013-02-25', 86161, 69428], ['2013-03-04', 216865, 186482], ['2013-03-11', 105252, 74850], ['2013-03-18', 141978, 107281], ['2013-03-25', 4647, 0], ['2013-04-01', 46339, 32781], ['2013-04-08', 19920, 0]);

在第一个数组中。就像我说的,我必须达到上面示例变量中显示的形式。这在 JavaScript 中怎么可能?在这种情况下应该使用什么方法?

4

3 回答 3

3

使用一个简单的循环:

for (var i = 0; i < myMondaysImpressionsData.length; i++) {
    if (i < myMondaysImpressionsPaidData.length) {
        myMondaysImpressionsData[i].push(myMondaysImpressionsPaidData[0]);
    }
}

如果你想得到一个新的数组,那就是不改变第一个,只需复制它之前。在 JavaScript 中,这是使用

var copy = array.slice();
于 2013-04-18T16:22:49.270 回答
0

One possible solution for modern browsers:

var example = myMondaysImpressionsData.slice().map(function(e, i) {
    return e.concat(myMondaysImpressionsPaidData[i]);
});

If you need old browsers support use shim for map() method from MDN.

于 2013-04-18T16:25:04.857 回答
0

使用 Array 的 concat 函数并假设您想创建一个包含最终结果的新对象,我会像这样解决它。

var example = [], length = myMondaysImpressionsPaidData.length, i;
for (i = 0; i < length; i++) {
    example.push(myMondaysImpressionsData[i].concat(myMondaysImpressionsPaidData[i]));
}
于 2013-04-18T16:52:25.957 回答