字符串是类似“1001001”这样的,需要进行二进制形式的按位运算,但实际中Javascript会以十进制形式把它转化成二进制,运算后返回十进制的结果,这并不是想要的结果。
想要的是直接把这个字符串当作二进制处理,很遗憾Javascript没有提供方法把字符串当作二进制,只提供了把十进制数转化成二进制的方法toString(2),因此需要找到一个能把二进制数形式的字符串直接进行按位运算的方法。
思路:遍历每一个字符串的每一个字符
[按位与&:如果该字符是1,则给新数组相应位的值加1,最后通过判断该值是否等于字符串的个数返回相应的1或者0]
[按位与|:如果该字符是1,则给新数组相应位的值1,否则复值0,最后返回新数组]
以下函数是以按位或|进行计算
/* * Convert String "100010" as Binary "100010" */ function binaryOr(arr){ var len1 = arr.length,len2 = 0; var arrItem = ""; var resultArr = new Array(len1); for(var i = 0;i < len1;i++){//遍历数组中每一个字符串 arrItem = arr[i]; len2 = arrItem.length; for(var j = 0; j < len2; j++){//拆分字符串的每一位 if(arrItem[j] == 1){ resultArr[j] = 1; }else{ if(resultArr[j] != 1){ resultArr[j] = 0; } } } } return resultArr; } var curArr = ["001010","001100"]; var rs = binaryOr(curArr); console.log(rs);