如何从具有负值的拆分字符串中获取数组
How To Get An Array From Splitted String That Has Negative Value
我不知道什么是正确的问题。
我想让这个数字-800变成[-8,0,0]是任何人都可以建立它
我做的第一件事就是让数字变成一个字符串,然后使用 map 函数迭代它变成一个这样的数组
const number = -800;
const numberString = number.toString();
const arrayString = numberString.split``.map((x) => +x);
console.log(arrayString)
但是结果是[ NaN, 8, 0, 0 ]
如何在不影响其他索引的情况下将 NaN
和第一个索引 8
变为 -8
。所以就变成了[-8, 0, 0]
有人能帮帮我吗?
谢谢。
一个可能的解决方案是仅对绝对值执行此操作,并在 map
期间检查数字是否为负数(仅针对第一个索引)。
const number = -800;
const numberString = Math.abs(number).toString();
const arrayString = numberString.split``.map((x, i) => i == 0 && number < 0 ? -x : +x);
console.log(arrayString)
尝试 numberString.match(/-?\d/g)
而不是 split
const number = -800;
const numberString = number.toString();
const arrayString = numberString.match(/-?\d/g).map(x => +x);
console.log(arrayString)
如果你不清楚Regex
,你可以使用Array.from
将字符串转换为数组编号。然后根据原数的符号处理第一个数
console.log(convertNumberToArray(800));
console.log(convertNumberToArray(-800));
function convertNumberToArray(number){
var result = Array.from(Math.abs(number).toString(), Number);
result[0] *= number <= 0 ? -1 : 1;
return result;
}
将 String#match 与匹配可选的正则表达式一起使用 - 挖掘它。
var number = -800;
var numberString = number.toString().match(/-?\d/g);
var numberInt = [];
for (var i = 0; i < numberString.length; i++) {
numberInt.push(parseInt(numberString[i]));
}
console.log(numberInt);
我不知道什么是正确的问题。
我想让这个数字-800变成[-8,0,0]是任何人都可以建立它
我做的第一件事就是让数字变成一个字符串,然后使用 map 函数迭代它变成一个这样的数组
const number = -800;
const numberString = number.toString();
const arrayString = numberString.split``.map((x) => +x);
console.log(arrayString)
但是结果是[ NaN, 8, 0, 0 ]
如何在不影响其他索引的情况下将 NaN
和第一个索引 8
变为 -8
。所以就变成了[-8, 0, 0]
有人能帮帮我吗?
谢谢。
一个可能的解决方案是仅对绝对值执行此操作,并在 map
期间检查数字是否为负数(仅针对第一个索引)。
const number = -800;
const numberString = Math.abs(number).toString();
const arrayString = numberString.split``.map((x, i) => i == 0 && number < 0 ? -x : +x);
console.log(arrayString)
尝试 numberString.match(/-?\d/g)
而不是 split
const number = -800;
const numberString = number.toString();
const arrayString = numberString.match(/-?\d/g).map(x => +x);
console.log(arrayString)
如果你不清楚Regex
,你可以使用Array.from
将字符串转换为数组编号。然后根据原数的符号处理第一个数
console.log(convertNumberToArray(800));
console.log(convertNumberToArray(-800));
function convertNumberToArray(number){
var result = Array.from(Math.abs(number).toString(), Number);
result[0] *= number <= 0 ? -1 : 1;
return result;
}
将 String#match 与匹配可选的正则表达式一起使用 - 挖掘它。
var number = -800;
var numberString = number.toString().match(/-?\d/g);
var numberInt = [];
for (var i = 0; i < numberString.length; i++) {
numberInt.push(parseInt(numberString[i]));
}
console.log(numberInt);