javascript - 在javascript中迭代多个数组

标签 javascript arrays

我的数据数组如下:

 totalDays = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"],
 saleDays =  ["tue", "thu"],
 sale = [314,240].

我需要以这样的方式修改“销售”数组,即销售数组应与具有相应销售天数的totalDays数组进行比较,如果当天存在销售,则包​​括销售数组金额,否则在销售数组中包括0。

对于上面的示例,我需要销售数组输出,如下所示:

sale  = [0,314,0,240,0,0,0].

代码:

 var arr = _.zip(saleDays, sale);
    var newSale = [];
    var saleAmt = 0;
    _.forEach(arr, function(element) {
        saleAmt = totalDays.indexOf(element[0]) > -1 ? element[1] : 0;
        newSale.push(saleAmt); 
    });

但问题是在这种情况下,indexOf条件总是返回true,所以我尝试使用嵌套循环,例如:

    _.forEach(totalDays, function(dt) {
        _.forEach(arr, function(element) {
        saleAmt = dt === element[0] ? element[1] : 0;
        newSale.push(saleAmt); 
        });
    });

但在本例中,循环运行了“m * n”次。其中 m 是“totalDays”的长度,“n”是“arr”的长度。我想避免这种情况,循环应该运行totalDays.length次并产生结果。请帮助我实现愿望的输出。

根据@Tao P. R.的建议,我正在尝试将同样的事情用于具有周开始日期的月份销售数组。

例如:

totalSale = ['Wed Jun 10 2015','Tue Jun 16 2015','Mon Jun 22 2015','Sun Jun 28 2015','Sat Jul 04 2015','Fri Jul 10 2015']
saleDays: [ 'Mon Jun 15 2015', 'Tue Jul 07 2015' ]
sale: [134,245]

现在我必须检查 TotalSale 的销售是在哪一周完成的。对于上面的例子我需要 销售数据 = [134,0,0,0,245,0] 我已经通过为 TotalSale 创建数组数组来尝试此操作,

var mappedSale = _.map(totalDays, function(d){ 
    for(var j = 0; j < saleDays.length; j ++ ){
        var i = d.indexOf(saleDays[j]);
            if (i<0){ return 0 }
            else return sale[i];
    }
});

哪里,

totalDays = [['Wed Jun 10 2015',..'Mon Jun 15 2015'],['Tue Jun 16 2015',..'Sun Jun 21 2015'],...]

请告诉我这有什么问题吗?

最佳答案

您可以使用Array.prototype.maptotalDays数组与sale的相应值进行映射,如下所示:

 totalDays = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"],
 saleDays =  ["tue", "thu"],
 sale = [314,240];

// Output
var mappedSale = totalDays.map(function(d){
    var i = saleDays.indexOf(d);
    if (i<0){ return 0 }
    else return sale[i];
});

alert(mappedSale); // <-- [0,314,0,240,0,0,0]

下划线等效的逻辑:

var mappedSale = _.map(totalDays, function(d){
    var i = saleDays.indexOf(d);
    if (i<0){ return 0 }
    else return sale[i];
});

关于javascript - 在javascript中迭代多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312015/

相关文章:

javascript - 在javascript中重置文本区域高度

php - 在 PHP 中转换 key 的最佳方法

c++ - 使用指针合并两个排序数组的问题

php - 按对象中的日期对对象数组进行排序

javascript - 使用 cytoscape.js 选择属性(数组类型)包含特定值的节点

javascript - 在另一个列表中均匀插入列表

javascript - Bootstrap : close modal and save changes

javascript - 围绕按钮链接到链接的按钮

c++ - 如果我从未实际使用引用,那么引用越界数组元素是否安全?

javascript - PHP 数组不通过循环显示所有值