0

我有一个包含这些值的数组:

var items = [Thursday,100,100,100,100,100,100]

我从 URL 查询字符串中获取这些,所以它们都是字符串值。我希望除第一列之外的所有列都是数字。数组的列数可能会有所不同,所以有没有办法设置它,所以 items[0] 始终是一个字符串,但 items[n] 始终是一个数字?

4

3 回答 3

5

“......有没有办法设置这个,所以 items[0] 总是一个字符串,但 items[n] 总是一个数字?”

用于.shift()获取第一个,.map()构建一个新的数字数组,然后.unshift()将第一个添加回。

var first = items.shift();
items = items.map(Number);
items.unshift(first);

演示:http: //jsfiddle.net/EcuJu/


我们可以像这样压缩它:

var first = items.shift();
(items = items.map(Number)).unshift(first);

演示:http: //jsfiddle.net/EcuJu/1/


于 2013-05-14T16:40:13.490 回答
1

我认为这应该对你有用。您可以设置任何您喜欢的默认数字而不是 0。

var items = ["Thursday","100","100","100","100","100","100"], i;
for (i = 1; i < items.length; i++)
{
    if(typeof items[i] !== "number")
    {
        items[i] = isNaN(parseInt(items[i], 10)) ? 0 : parseInt(items[i], 10);
    }
}
于 2013-05-14T16:42:40.660 回答
1

parseFloat() 会将您的字符串转换为数字。

这是现代浏览器的示例代码(不适用于 IE7/IE8):

var convertedItems=items.map(function(element,index){
  // Convert array elements with index > 0
  return (index>0)?parseFloat(element):element;
});

还有一个用于转换为整数的 parseInt() 方法:

parseInt(element,10)
于 2013-05-14T16:49:00.847 回答