如何从具有负值的拆分字符串中获取数组

问题描述

我不知道什么是正确的问题。

我想让这个数字 -800 变成 [-8,0] 任何人都可以构建它

我做的第一件事是将数字变成一个字符串,然后使用我迭代的 map 函数将它变成这样的数组

const number = -800;
const numberString = number.toString();
const arrayString = numberString.split``.map((x) => +x);

console.log(arrayString)

但结果是[ NaN,8,0 ]

如何在不干扰其他索引的情况下将NaN和第一个索引8更改为-8。所以它变成了 [-8,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)

,

如果您不清楚 array.includes(),可以使用 Text 将字符串转换为数组编号。然后根据原号码的符号处理第一个号码。

Text(
    text = "Click Me",style = TextStyle(color = Color.White),modifier = Modifier
        .clickable(onClick = {})
        .background(
            Brush.verticalGradient(
                colors = listOf(
                    Color.Blue,Color.Green
                )
            ),shape = RoundedCornerShape(4.dp)
        )
        .padding(horizontal = 16.dp,vertical = 8.dp),)

,

使用 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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...