You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数字字符按≥5转1、≤4转0的规则转换为二进制串?

数字字符转二进制标识:≥5转1,≤4转0

需求说明

需要将一串数字中的每个字符按规则转换:所有≥5的数字转为1,≤4的数字转为0。例如输入数字串7466454644,转换后得到1011010100。

当前代码背景

现有代码先将数组中的二进制字符串转为数字并求和,得到了7466454644,需要补充后续转换逻辑:

n = [
  '0110100000', '1001011111',
  '1110001010', '0111010101',
  '0011100110', '1010011001',
  '1101100100', '1011010100',
  '1001100111', '1000011000'
] // array of binary 

let bin = [] // converting to numbers
length = n.length;
for (var i = 0; i < length; i++)
  bin.push(parseInt(n[i]));

var sum = 0; // sum of all binaries
for (var i = 0; i < bin.length; i++) {
  sum += bin[i];
}
console.log(sum); // 7466454644

// ...
// 需要补充转换逻辑
// ...

// console.log(sumConverted) // 期望输出 1011010100

实现方案

方法1:字符串遍历处理

把求和得到的数字转为字符串,逐个字符判断后拼接结果:

// 接之前的代码
const sumStr = sum.toString();
let sumConverted = '';
for (const char of sumStr) {
  sumConverted += Number(char) >= 5 ? '1' : '0';
}
console.log(sumConverted); // 输出 1011010100

方法2:正则表达式替换

利用正则匹配单个数字字符,结合替换函数实现转换,代码更简洁:

// 接之前的代码
const sumConverted = sum.toString().replace(/\d/g, char => Number(char) >= 5 ? '1' : '0');
console.log(sumConverted); // 输出 1011010100

方法3:数组方法链式调用

通过字符串转数组、映射转换、再转回字符串:

// 接之前的代码
const sumConverted = sum.toString()
  .split('')
  .map(char => Number(char) >= 5 ? '1' : '0')
  .join('');
console.log(sumConverted); // 输出 1011010100

额外优化:跳过求和步骤直接处理原始数组

如果后续sum的数值过大可能出现精度丢失,可以直接遍历原始数组的每个字符处理,避免大数问题:

// 直接处理原始数组,无需先求和
let sumConverted = '';
for (const str of n) {
  for (const char of str) {
    sumConverted += Number(char) >= 5 ? '1' : '0';
  }
}

// 或用数组链式写法
const sumConverted = n
  .flatMap(str => str.split(''))
  .map(char => Number(char) >= 5 ? '1' : '0')
  .join('');

console.log(sumConverted); // 得到正确转换结果

内容的提问来源于stack exchange,提问作者deftins12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:10:38