Fe-interview: [js] 第31天 写一个方法把0和1互转(0置1,1置0)

Created on 16 May 2019  ·  21Comments  ·  Source: haizlin/fe-interview

第31天 写一个方法把0和1互转(0置1,1置0)

js

Most helpful comment

直接异或操作就行了

const convert = num => num^1;
convert(0); // 1
convert(1); // 0

All 21 comments

二进制的话就可以异或了吧

var a;
!a && 1 || 0 ;
~a+2

function interchange(x) {
return +!x;
}

~x + 2

如果没其他更深层次的意思的话,,,

function foo (val) {
  return val === 1 ? 0 : 1
}
function calc (val) {
  return val === 1 ? 0 : 1
}
let str = "0101"  
// =>
str = "1010"
function change(str){
 return ~str
}

这个问题不清楚考察什么 ?

var a;
!a && 1 || 0 ;
~a+2

有问题

不考虑浮点数的话
function change(val) {
if (typeof val === 'number') {
val += ''
let newStrArr = val.split('').map((item, index) => {
return item == '1' ? '0' : '1'
})
let newStr = newStrArr.join('')
return parseInt(newStr)
}
return val.split('').map((item, index) => item == '1' ? '0' : '1').join('')
}
let str='10101'
console.log(change(str)) //01010
str=10101
console.log(change(str)) //1010

应该是考察异或运算把,记得以前学过 1^num就可以完成,但是这仅仅限于num为数字的情况

function foo (val) {
var arr = val.split("");
var a = "";
for(let i=0;i if( arr[i] == 1){
a += 0;
}else if(arr[i] == 0){
a += 1;
}else{
a += arr[i]
}
}
console.log(a);
}
foo("48522220000333331111")

const reverse = num=>+!num
const reverseNum = str => str.replace(/\d/g, m => +!+m);

function six(str) {
let arr = str.split('')
let brr = arr.map(item => {
if (item !== '0' && item !== '1') {
return item
} else if (item === '0') {
return 1
} else if (item === '1') {
return 0
} else if (item === ' ') {
return ' '
}
})
console.log(brr.join(''))
}
six(0110..32..1) // 1001..32..0

感觉是二进制取反的操作,可以使用 ~ 符号进行取反。

~1; // -2
~-2; // 1

如果只是单纯的 0 和 1 互换的话。

function switchOneZero(a) {
  const str = `${a}`;
  return str
    .split("")
    .map(s => (s === "0" ? 1 : s === "1" ? 0 : s))
    .join("");
}

console.log(switchOneZero(2310110));

直接异或操作就行了

const convert = num => num^1;
convert(0); // 1
convert(1); // 0
function interChange (num) {
  return ~num+2
}
console.log('interChange',interChange(1))
function foo (val) {
  return val === 1 ? 0 : 1
}
function foo(n) {
    return -(n + 1) + 2
}

~x + 2 一样

function change12(number){
  if(!typeof number){
    new Error('not number')
  }
  return number ? 0 : 1
}

function interchange(x) {
return +!x;
}

reverse = (x: number) => x^1

function test(str){
let length =str.length
let i = 0
let arr = []
const newStr = str.toString()
while(length>0){
if(!!+newStr[i]){
arr.push(0)
}else{
arr.push(1)
}
length--;
i++;
}
return arr
}

Was this page helpful?
0 / 5 - 0 ratings