我有一个字符串,我需要拆分成一个数组,然后对数组的每个元素执行数学函数。
目前我正在做这样的事情。 (实际上,我没有这样做,但这是一个非常简单的例子来解释我的问题!
var stringBits = theString.split('/');
var result = parseInt(stringBits[0]) + parseInt(stringBits[3]) / parseInt(stringBits[1]);
我想知道的是,如果有一种方法可以将数组的每个元素转换为某种类型,这将阻止我每次都必须显式解析它。
答案 0 :(得分:7)
更简单的方法是映射到Number对象
var ct = ["1","2","3","4","5","6"];
var i = -1;
var j = [];
$('.goal1').each(function(index){
$(this).on('click', function(e){
i = i+1;
i = i % ct.length;
$(this).parents('li').addClass('selected');
$(this).fadeOut('50', function(){
$(this).parents('li').find('.goal2').fadeIn('50');
});
if(j.length > 0){
$(this).parents('li').find('.counter').text(j.pop());
}
else
$(this).parents('li').find('.counter').text(ct[i]);
if($('li.selected').length > 5){
$('.goal1').prop('disabled', true);
}
e.preventDefault();
});
});
$('.goal2').each(function(index){
$(this).on('click', function(e){
i = i-1;
i = i % ct.length;
$(this).parents('li').removeClass('selected');
$(this).fadeOut('50',function(){
$(this).parents('li').find('.goal1').fadeIn('50');
});
j.push($(this).parents('li').find('.counter').text());
$(this).parents('li').find('.counter').text('');
$('.goal1').prop('disabled', false);
if($('li.selected').length == 0){
j = [];
}
e.preventDefault();
});
});
答案 1 :(得分:3)
你可以循环使用它:
for(var i = 0; i < stringBits.length; i++) {
stringBits[i] = parseInt(stringBits[i]);
}
答案 2 :(得分:3)
javascript 1.6。有map()(https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/Map),所以你可以做类似
的事情intArray = someArray.map(function(e) { return parseInt(e) })
答案 3 :(得分:0)
["1","2"].map(Number)
result: [1,2]
答案 4 :(得分:-2)
如果在字符串前添加加号(+),则应将其转换为数字。
例如,这将打印3:
var x = "1";
var y = "2";
alert((+x) + (+y));
但我不确定这是否适用于所有浏览器。
您的代码将变为:
var stringBits = theString.split('/');
var result = (+stringBits[0]) + (+stringBits[3]) / (+stringBits[1]);
但这只是一个黑客,所以要小心使用。
我认为parseInt
更好地说明了您要做的事情,但是您应该将此责任委托给另一个返回您需要处理的最终数据的方法。转换然后处理,不处理时转换。您的代码将更易于阅读。