Подтвердить что ты не робот

Как преобразовать строку, разделенную запятой, в числовой массив в javascript

У меня есть одномерный массив целого числа в JavaScript, который я бы хотел добавить в данные из разделенной запятой строки. Есть ли простой способ сделать это?

например: var strVale = "130,235,342,124 ";

4b9b3361

Ответ 1

Вы можете использовать split(), чтобы получить массив строк из строки, разделенной запятыми. Если вы выполняете итерацию и выполняете математическую операцию над элементом массива строк, тогда этот элемент будет обрабатываться как число при выполнении, но все равно у вас есть строковый массив. Для преобразования разделенного запятыми массива строк int см. edit.

arr = strVale.split(',');

Live Demo

var strVale = "130,235,342,124";
arr = strVale.split(',');
for(i=0; i < arr.length; i++)
    console.log(arr[i] + " * 2 = " + (arr[i])*2);

Выход

130 * 2 = 260
235 * 2 = 470
342 * 2 = 684
124 * 2 = 248

Редактировать, строка с запятой для int Array. В приведенном выше примере строка выставляется в числа в выражении, но для получения массива int из строкового массива вам необходимо преобразовать его в число.

var strVale = "130,235,342,124";
var strArr = strVale.split(',');
var intArr = [];
for(i=0; i < strArr.length; i++)
   intArr.push(parseInt(strArr[i]));

Ответ 2

? "123,87,65".split(",").map(Number)
> [123, 87, 65]

Редактировать >>

Благодаря замечаниям @NickN & @connexo! Фильтр применим, если вы, например. хотите исключить любые нечисловые значения:

?", ,0,,6, 45,x78,94c".split(",").filter(x => x.trim().length && !isNaN(x)).map(Number)
> [0, 6, 45]

Ответ 3

Вы можете использовать String split method, чтобы получить одиночные числа в виде массива строк. Затем преобразуйте их в числа с помощью унарного оператора plus, функции Number или parseInt и добавьте их в свой массив:

var arr = [1,2,3],
    strVale = "130,235,342,124 ";
var strings = strVale.split(",");
for (var i=0; i<strVale.length; i++)
    arr.push( + strings[i] );

Или, в один шаг, используя Array map для их преобразования и применяя их к одному push:

arr.push.apply(arr, strVale.split(",").map(Number));

Ответ 4

просто вам нужно использовать несколько методов для этого, чтобы это!

var strVale = "130,235,342,124";
var resultArray = strVale.split(',').map(function(strVale){return Number(strVale);});

вывод будет массивом чисел.

Ответ 5

Метод split() используется для разбиения строки на массив подстрок и возвращает новый массив.

Syntax:
  string.split(separator,limit)


arr =  strVale.split(',');

СМОТРИТЕ ЗДЕСЬ

Ответ 6

Вы можете разделить и преобразовать, как

 var strVale = "130,235,342,124 ";
 var intValArray=strVale.split(',');
 for(var i=0;i<intValArray.length;i++{
     intValArray[i]=parseInt(intValArray[i]);
}

Теперь вы можете использовать intValArray в логике.

Ответ 7

Решение:

var answerInt = [];
var answerString = "1,2,3,4";
answerString.split(',').forEach(function (item) {
   answerInt.push(parseInt(item))
});

Ответ 8

Это простое и быстрое решение, когда строковое значение соответствует запятой (,).

Но если строка с последним символом с запятой, что делает пустой элемент массива, и это также удаляет лишние пробелы вокруг него.

"123234345"

Поэтому я предлагаю использовать push()

var arr = [], str="123,234,345,"
str.split(",").map(function(item){
    if(item.trim()!=''){arr.push(item.trim())}
})

Ответ 9

Все приведенные ответы пока что дают неожиданный результат для строки типа ",1,0,-1, ,2":

",1,0,-1,,  ,,2".split(",").map(Number).filter(x => !isNaN(x))
// [0, 1, 0, -1, 0, 0, 0, 2]

Чтобы решить эту проблему, я предложил следующее исправление:

",1,0,-1,,  ,,2".split(',').filter(x => x.trim() !== "").map(Number).filter(x => !isNaN(x))
// [1, 0, -1, 2]

Обратите внимание, что из-за

isNaN("") // false!

а также

isNaN(" ") // false

мы не можем объединить оба шага фильтра.