2014-10-02 1 views
0

Текущая строка чисел следующим образом:Преобразовать массив с одной гигантской строкой «чисел», разделенным запятыми, в массив чисел (не строки)

["151,47,47,200,42,130,39,39,152,144,84,66,137,39,83,155,40,49,109,178,91,196,99,190,36,38,169,63,31,60,83,61,79,156,137,64,169,173,40,39,87,188,170,154,188,152,71,106,76,105,184,122,60,71,134,32,39,48,54,77,47,168,134,60,59,161,95,167,108,115,74,132,143,197,99,193,96,174,182,61,48,129,59,190,76,194,197,54,61,72,145,193,70,192,106,164,52,179,179,53"] 

Обратите внимание, что есть двойные кавычки на оба конца, от которых мне нужно избавиться.

Формат целью является:

[151,47,47,200,42,130,39,39,152,144,84,66,137,39,83,155,40,49,109,178,91,196,99,190,36,38,169,63,31,60].... 

Я попытался с помощью rStrip и заменить, но это не работает. Есть идеи?

Спасибо!

+3

Как насчет раскола (''), а затем перебрать результирующий массив с использованием ParseInt – J148

+1

str.split ("") карт (номер) – dandavis

ответ

1

Split, итерацию и литая:

var a = ["151,179,179,53"]; 
var values = a[0].split(',').map(Number); 
console.log(values); 
+0

Число быстрее и намного меньше для ввода, или Math.floor, если вы хотите Ints ... – dandavis

+0

'Number()' может быть быстрее, но как его меньше, чем '+' ?? – Malk

+0

Действительно, хороший! – Malk

0
var strings = data[0].split(','); // array of strings containing numbers 
var numbers = []; 

for (var i = 0; i < strings.length; i++) { 
    numbers[i] = parseInt(strings[i],10); 
} 

Edit: Это именно то, что @ J148 предложил в своем комментарии

0

Вы можете использовать .split(), а затем перебрать массив, разбор элементов в Интс.

DEMO

HTML:

<div id='show'></div> 

JS:

var stringArray = "151,47,47,200,42,130,39,39,152,144,84,66,137,39,83,155,40,49,109,178,91,196,99,190,36,38,169,63,31,60,83,61,79,156,137,64,169,173,40,39,87,188,170,154,188,152,71,106,76,105,184,122,60,71,134,32,39,48,54,77,47,168,134,60,59,161,95,167,108,115,74,132,143,197,99,193,96,174,182,61,48,129,59,190,76,194,197,54,61,72,145,193,70,192,106,164,52,179,179,53"; 
var numArray = stringArray.split(','); 
for (var n=0;n<numArray.length;n++) { 
    numArray[n] = parseInt(numArray[n],10); 
} 
//add 1 to each to prove they are ints 
for (var n=0;n<numArray.length;n++) { 
    document.getElementById('show').innerHTML += numArray[n]+'+1 = '+(numArray[n]+1)+'<br/>'; 
} 
0

вы уже получили то, что вам нужно, почти. это означает, что проще преобразовать и проанализировать, чем преобразовать.

очень простой и быстрый способ без зацикливания:.

JSON.parse("["+["151,47,47,200,42,130,39,39,152,144,84,66,137,39,83,155,40,49,109,178,91,196,99,190,36,38,169,63,31,60,83,61,79,156,137,64,169,173,40,39,87,188,170,154,188,152,71,106,76,105,184,122,60,71,134,32,39,48,54,77,47,168,134,60,59,161,95,167,108,115,74,132,143,197,99,193,96,174,182,61,48,129,59,190,76,194,197,54,61,72,145,193,70,192,106,164,52,179,179,53"]+"]") 
Смежные вопросы