2016-05-16 21 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);