假设我有一个从这个日期区间 [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/