我有一个JavaScript中的一维整数数组,想要从逗号分隔的字符串中添加数据,是否有简单的方法可以实现?
例如:var strVale = "130,235,342,124";
我有一个JavaScript中的一维整数数组,想要从逗号分隔的字符串中添加数据,是否有简单的方法可以实现?
例如:var strVale = "130,235,342,124";
? "123,87,65".split(",").map(Number)
> [123, 87, 65]
编辑 >>
感谢@NickN和@connexo的评论!如果您想排除任何非数字值,可以使用筛选器。
?", ,0,,6, 45,x78,94c".split(",").filter(x => x.trim().length && !isNaN(x)).map(Number)
> [0, 6, 45]
"123,87,hello,65".split(",").map(Number).filter(x => !isNaN(x))
将会得到 [123, 87, 65]
。 - NickN",,1,".split(",").map(Number).filter(x => !isNaN(x))
失败,因为它将返回 [0, 0, 1, 0]
。这是由于 Number("")
返回 0
。还要注意 isNaN("")
返回 false
。 - connexo",,1,".split(",").map(Number).filter(x => x!="" && !isNaN(x))
轻松解决它。 - serge0
值。尝试使用 ",,0,".split(",").map(Number).filter(x => x!="" && !isNaN(x))
。https://dev59.com/kGQo5IYBdhLWcg3wBLYo#56426645 可以解决这个问题。 - connexoarr = strVale.split(',');
var strVale = "130,235,342,124";
arr = strVale.split(',');
for(i=0; i < arr.length; i++)
console.log(arr[i] + " * 2 = " + (arr[i])*2);
输出
130 * 2 = 260
235 * 2 = 470
342 * 2 = 684
124 * 2 = 248
编辑,逗号分隔的字符串转换为整数数组 在上面的示例中,字符串在表达式中被转换为数字,但要从字符串数组获取整数数组,您需要将其转换为数字。
var strVale = "130,235,342,124";
var strArr = strVale.split(',');
var intArr = [];
for(i=0; i < strArr.length; i++)
intArr.push(parseInt(strArr[i]));
var strVale = "130,,,0,,235,342,124";
。 - connexosplit
方法将单个数字作为字符串数组获取。然后,使用一元加运算符、Number
函数或parseInt
将其转换为数字,并将其添加到您的数组中:var arr = [1,2,3],
strVale = "130,235,342,124 ";
var strings = strVale.split(",");
for (var i=0; i<strVale.length; i++)
arr.push( + strings[i] );
或者,一步到位,使用Array map
将它们转换并应用到一个单独的push
中:
arr.push.apply(arr, strVale.split(",").map(Number));
你只需要使用几个方法,就可以做到这一点,仅此而已!
var strVale = "130,235,342,124";
var resultArray = strVale.split(',').map(function(strVale){return Number(strVale);});
输出将是数字数组。
Syntax:
string.split(separator,limit)
arr = strVale.split(',');
var strVale = "130,235,342,124 ";
var intValArray=strVale.split(',');
for(var i=0;i<intValArray.length;i++{
intValArray[i]=parseInt(intValArray[i]);
}
var answerInt = [];
var answerString = "1,2,3,4";
answerString.split(',').forEach(function (item) {
answerInt.push(parseInt(item))
});
",1,0,-1,, ,,2"
这样的字符串都会产生可能意想不到的结果。",1,0,-1,, ,,2".split(",").map(Number).filter(x => !isNaN(x))
// [0, 1, 0, -1, 0, 0, 0, 2]
",1,0,-1,, ,,2".split(',').filter(x => x.trim() !== "").map(Number).filter(x => !isNaN(x))
// [1, 0, -1, 2]
isNaN("") // false!
和
isNaN(" ") // false
let strVale = "130,235,342,124 ";
let unformattedArray =strVale.split(',');
const formatArray = (unformattedArray) => {
if (unformattedArray.map(Number).includes(NaN)) {
return unformattedArray;
}
else {
return unformattedArray.map(Number);
}
}
//then every time we want to format we call our function to format for us
console.log(formatArray(unformattedArray));
// or asign a value
let foramttedArray = formatArray(unformattedArray);
当字符串值带有逗号(,)时,这是一种简单快捷的解决方案。
但是,如果字符串以逗号结尾,则会产生一个空白数组元素,并且还会删除其周围的额外空格。
"123,234,345,"
因此,我建议使用 push()
。
var arr = [], str="123,234,345,"
str.split(",").map(function(item){
if(item.trim()!=''){arr.push(item.trim())}
})