2016-10-26 4 views
2

У меня есть две строкиКак сравнить два двоичных значения в javascript/node js?

var a = "10001010"; 
var b = "10110010"; 

Так что будет функция, чтобы выяснить, сходства в два строке, в том случае, когда функция возвращает это значение;

A и B имеют 5 цифр общего; которые приведены ниже;

var a = "**10**001**010**"; 

var b = "**10**110**010**"; 

Как я могу получить эти значения?

Мне нужны общие черты между этими двумя строками.

+4

выход должен быть в каком формате? индексов или двоичных данных? – gurvinder372

+2

Каков ожидаемый результат и то, что вы пробовали до сих пор? – thefourtheye

+0

@ gurvinder372 Выход должен быть в двоичных данных. –

ответ

1

Вы можете использовать bitwise XOR^ с численными значениями строк и значения 2 - 1.

В двоичном результат, один 1 означает то же значение a и b и 0 означает нет.

value binary dec comment 
-------- -------- --- --------------------------------------- 
     a 10001010 138 
     b 10110010 178 
-------- -------- --- 
    ^00111000 56 it shows only the changed values with 1 
2^^8 - 1 11111111 255 
-------- -------- --- 
    ^11000111 199 result with 1 for same value, 0 for not 

var a = parseInt("10001010", 2), 
 
    b = parseInt("10110010", 2), 
 
    result = (a^b)^(1 << 8) - 1; 
 

 
console.log(result); 
 
console.log(result.toString(2));

+0

Это кажется очень хорошим. Какова эффективность такого рода операций XOR. Представьте, что я сравниваю тысячи в одном и том же случае. –

+0

он должен идти достаточно быстро, это всего лишь двоичная операция. –

+1

Спасибо! Он работает нормально, без каких-либо заметных накладных расходов. –

0

Я думаю, вы можете просто сравнить их как этот

("10001010" > "10110010") --> false 
("10001010" < "10110010") --> true 
("10001010" < "00110010") --> false 
("00110010" == "00110010") --> true 
0

Я написал логику, чтобы сделать это enter link description here

var test = "10001010"; 
var test2 = "10110010"; 
var testArray = test.split(''); 
var testArray2 = test2.split(''); 
var resultArray = []; 
for(index = 0; testArray.length > index;index++){ 
    if(testArray[index] === testArray2[index]){ 
    resultArray.push(testArray[index]) 
    }else{ 
     resultArray.push("*") 
    } 
} 

console.log(resultArray.join(""));