[英]Javascript generate logical array based on condition
來自matlab背景,我正在嘗試在Javascript中復制以下場景
A = [1, 2, 3, 4, 5];
B = 4;
C = A == B;
answer => C = [0, 0, 0, 1, 0]
換句話說,它會生成一個邏輯數組,其中僅將要比較的值設置為1。我可以使用循環執行此操作,但是我想知道在javascript中是否有1個線性解決方案?
您可以使用map()
函數執行與您想要的相似的操作:
var A = [1, 2, 3, 4, 5];
var B = 4;
var C = function (x) { return +(x === B); };
var answer = A.map(C);
var C = x => +(x === B);
看起來更干凈,但這是ES6代碼(實驗性的)。
關於你能得到的最好的
var C = A.map(function(v) { return v == B ? 1 : 0; });
較新的JavaScript運行時系統對此提供支持。
在JavaScript中,習慣使用包含布爾值的結果數組可能更慣用:
var C = A.map(function(v) { return v == B; });
您可以編寫自己的函數:
function equals(a, b) {
var result = [];
while (result.length < a.length) {
result.push(+(a[result.length] == b));
}
return result;
}
var A = [1, 2, 3, 4, 5];
var B = 4;
var C = equals(A, B); // [0, 0, 0, 1, 0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.