2016-05-16 349 views
0

这里我有一个数组。它是一个时间的数组。如何从JavaScript中的数组中删除引号?

time = ["19.00","19.01","19.34","19.37","20.05","20.12","10.54","11.12"]; 

我想删除所有这些引号。

time = [19.00,19.01,19.34,19.37,20.05,20.12,10.54,11.12]; 

实际上,我从Redis获取所有这些数据作为数组。

并将数据传递给javascript。

var httptime1 = '<?php echo json_encode($httptime1); ?>'; 

我用来去除引号这样,

for (var i = 0; i < time1.length; i++) 
{ 
    time1[i] = time1[i].replace(/"/g, " "); 
} 

但不工作。

你能建议我,这是最好的方法吗?

+1

正在被返回的时间是string..you的阵列可以简单地将它们映射到两倍或浮动 – rock321987

+0

判断是否使用'isNaN()'一个号码,并使用'parseInt函数()'或'parseFloat( )'将其转换为数字。 – Rudra

+0

如果你关心这些数字的准确性*,你会想把它们保留为一个字符串,而不是使用*不准确的浮点数*。 – deceze

回答

5

JavaScript数组的元素中没有引号。当你想要的是一组数字时,你所拥有的是一串字符串。

一个解决办法是做在JavaScript中转换:

var httptime1 = <?php echo json_encode($httptime1); ?>.map(Number); 

但最干净的一个很可能是在源头转换:

var httptime1 = <?php echo json_encode(array_map('floatval', $httptime1)); ?>; 

编辑:

那些看起来更像小时:分钟比像一些实际的数字......这意味着数字是无用的。你不只是要

var httptime1 = <?php echo json_encode($httptime1); ?>; 

(注意,我删除了单引号防止其解析为代码中的JS文字阵列)

+0

嗨,兄弟。谢谢你回答我的问题。但是当我使用你的建议时,我得到了一个错误。 'xyz.php:227 Uncaught TypeError:“[”19.00“,”19.01“,”19.34“,”19.37“,”20.05“,”20.12“,”10.54“,”11.12“]”map不是函数' –

+0

现在它工作正常。谢谢,很好的解释。简单而重要! –

0

这些是实际报价或者是他们字符串,你希望他们是漂浮?因为那么你只要做一个字符串到数字的转换。

3

使用Number构造/包装对象作为Array.map函数的回调(它将每个数组项转换成一个数字):

var time = ["19.00","19.01","19.34","19.37","20.05","20.12","10.54","11.12"], 
    time_new = time.map(Number); 

console.log(time_new); // [19, 19.01, 19.34, 19.37, 20.05, 20.12, 10.54, 11.12] 
0
var HandlerArray = []; // this is for help 

// i use foreach loop to make new array with float values 
function removeQuotes (element, index, array) { 

    element = parseFloat(element); 
    HandlerArray.push(element); 
    //console.log('array[' + index + '] = ' + element); 

} 

//execute function 
time.forEach(removeQuotes); 

time = HandlerArray; 
// Now time array looks like : 
[19, 19.01, 19.34, 19.37, 20.05, 20.12, 10.54, 11.12] 
0

我尝试使用数函数改变字符串号码。

var time = ["19.00","19.01","19.34","19.37","20.05","20.12","10.54","11.12"]; 
time.forEach(function(a,i){time[i]=Number(a)}); 
console.log(time);