JavaScript将字符串分割为整数数组

56

我有一个字符串在页面上,我想从中获取一个整数数组。

<div id="TheData">2,3,0,43,23,53</div>

我正在写这个:

var ArrayData = ($('#TheData').html()).split(',');

然而,ArrayData 变成了一个字符串数组。我该如何获得一个整数数组?请注意,HTML 中的某些元素可能等于 0

谢谢。


6个回答

69
var ArrayData = $('#TheData').html().split(',').map( Number );

使用MDN提供的代码,将Array.prototype.map()添加到早期版本的浏览器中。


您可以以相同的方式使用jQuery的$.map(),但它不适用于$.prototype.map()

var ArrayData = $.map( $('#TheData').html().split(','), Number );

1
如果数组中只有可以转换为整数的字符串,那么这将仅返回整数。 - kennebec
1
@kennebec:嗯,是的。恐怕我不明白你想表达什么意思。 - RightSaidFred
如果最终用户更改文本以包括小数点,则可能会得到浮点数而不是整数。在某些情况下,这可能是可以接受的,但对于那些没有预料到的人来说,它可能会导致意外的结果。 - Slobaum

42
var ArrayData = $.map($('#TheData').text().split(','), function(value){
    return parseInt(value, 10);
    // or return +value; which handles float values as well
});
你可以使用$.map将字符串数组转换为整数数组,方法是对数组中的每个元素调用parseInt函数。

5
еє”иЇҐдЅїз”Ё$.map($('#TheData').text().split(','), function(){...});гЂ‚ - Felix Kling
1
注意:这不是 jQuery.map 的示例,而是 Array#map 的示例。 - Jonathan Lonowski
这返回了一个NaN数组,需要添加函数(n) ... parseInt(n, 10)。 - frenchie
抱歉,伙计们。@FelixKling,感谢您纠正我。 - Keith.Abramo
请问您能否给我JavaScript中的确切替代方法?我使用了var data = parseInt(a.split(","));但它没有起作用。 - Gowtham
显示剩余2条评论

26

纯Javascript解决方案:

const elementText = document.getElementById('divSourceID').innerText;
const numericList = elementText.split(',').map(Number);

了解更多信息:

  1. getElementById: "getElementById()方法返回一个表示id属性与指定字符串匹配的元素的Element对象。由于如果指定,则要求元素ID必须是唯一的,因此它们是一种快速访问特定元素的有用方式。(...)". 来源: developer.mozilla.org.

  2. Array.prototype.map: "map() 方法创建一个新数组,其结果是对调用数组中的每个元素调用提供的函数". 来源: developer.mozilla.org.

  3. array.map(Number): 这个调用意味着第一个接收到的参数将自动转换为数字,并产生与您明确声明箭头函数相同的结果:

const numericList = elementText.split(',').map(Number);

与以下结果相同:

const numericList = elementText.split(',').map(str => Number(str));

JIT:特别感谢@Robbendebiene对于优秀的代码审查以及简化之前的代码。


1
这个函数可以简化为:elementText.split(',').map(Number); - Robbendebiene
1
很好的观察 @Robendebiene,谢谢。我会更新我的答案,因为我写的一些代码是不必要的(例如,split已经返回了一个数组)。 发现得好,谢谢。 - Daniel Santana

14

9

这里是一个简单的答案。

let x = "1,2,3,4";

let result = x.split(",").map((e) => parseInt(e));

console.log(result);

易于理解且能够完成任务! - Sufian

2
var ArrayData = $('#TheData').html().split(',').map( d => { return parseInt(d) });

Split之后使用map函数,在map的回调函数中可以解析该整数。


你好,欢迎来到本站!如果我有所遗漏,请见谅。但是,您的回答不就是已经发布的被接受的答案吗? - E. T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接