js位运算解决一个问题

项目有一个需求是展示该产品的语言版本,其数组为:

["中文(简)", "中文(繁)", "英文"]

比如A产品从后台获取到的语言版本数据是:

lang:4

通过二进行位运算,匹配数组中并得到该产品的语言版本为:英文。

我是想知道怎样用js来通过lang的值来运算并匹配到数组中对应的值,如A产品的语言版本为“英文”。(语言版本是可多选的)

阅读 2.7k
3 个回答
var arr = ["中文(简)", "中文(繁)", "英文"];
var code = 4;

var result = arr.filter((_, idx) => {
  var flag = 1 << idx;
  return (flag & code) == flag;
});
const num = 4;
const bytestring = num.toString(2);//"100"
const arr = ["中文(简)", "中文(繁)", "英文"];
const ret = arr.reverse().filter((v,i)=>+(bytestring[i]));

console.log(ret);// ["英文"];

数组只有3项,所以可以用三位的二进制代替,其中简是001,繁是010,英是100。

把数字转成二进制之后再对比数组做过滤即可。

呀,ES5方式怎么写?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏