簡體   English   中英

Javascript根據條件生成邏輯數組

[英]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; });

沒有單線 ,但是使用Array.map可以使您非常接近所需的內容:

 var a = [1, 2, 3, 4, 5];
 var b = 4;
 var c = a.map(function(item) { return item === b? 1: 0; });

 console.log(c);

小提琴

注意舊版本的瀏覽器不支持map,上面的MDN鏈接具有polyfil代碼,或者您可以包括任意數量的提供等效功能的庫(例如jQuery具有.map()函數)。

您可以編寫自己的函數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM