javascript - 在 bool 掩码上分散数组值的优雅方法

标签 javascript

假设我有一个从这个日期区间 [10/10/2018 - 20/10/2018] 得到的值数组。有些日子有附加值,例如温度;别人的不行。 值存在的 bool 掩码类似于 [1,0,0,0,1,0,0,1,0,0]。 和温度测量类似于 [10, 12, 9]

什么是基于掩码分散值以获得除空值 (-1, null, ...) 之外的所有日期度量的优雅方法

结果:

[10,-1,-1,-1,12,-1,-1,9,-1,-1]

编辑:为了展示努力。我想到了这个:

missing_mask.map(function(m) {
    if (m == 1)
        return values.reverse().pop();
    else
        return 0;
})

最佳答案

您可以映射 mask 并采用递增的 measures 索引或 -1

var mask = [1, 0, 0, 0, 1, 0, 0, 1, 0, 0],
    measures = [10, 12, 9],
    result = mask.map((i => b => b ? measures[i++] : -1)(0));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

ES5

var mask = [1, 0, 0, 0, 1, 0, 0, 1, 0, 0],
    measures = [10, 12, 9],
    result = mask.map(function (i) {
        return function (b) {
            return b
                ? measures[i++]
                : -1;
        };
    }(0));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

具有变化值的 ES5

var mask = [1, 0, 0, 0, 1, 0, 0, 1, 0, 0],
    measures = [10, 12, 9],
    result = mask.map(function (b) {
        return b
            ? measures.shift()
            : -1;
    });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 bool 掩码上分散数组值的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52148223/

相关文章:

javascript - 将最新版本的 TypeScript 定义与旧的 JavaScript 库一起使用

javascript - 尝试使用机器人 token 获取 channel 历史记录时出现 missing_scope 错误

JavaScript:由 eval() 触发的异常对象的标准字段是什么?

javascript - MediaElement.js 中的 Cortado Ogg-player - 几乎可以正常工作

javascript - Highcharts 未显示两条曲线的准确百分比?

javascript - 如何使用 AJAX 删除 PHP $_SESSION?

JavaScript 输入意外结束

javascript - 求三 Angular 形面积? "Undefined"如果 num < 0

javascript - 如何在 JavaScript 中编写递归阻塞函数而不溢出堆栈?

javascript - 难以理解分号插入