У меня есть одномерный массив целого числа в JavaScript, который я бы хотел добавить в данные из разделенной запятой строки. Есть ли простой способ сделать это?
например: var strVale = "130,235,342,124 ";
У меня есть одномерный массив целого числа в JavaScript, который я бы хотел добавить в данные из разделенной запятой строки. Есть ли простой способ сделать это?
например: var strVale = "130,235,342,124 ";
Вы можете использовать split(), чтобы получить массив строк из строки, разделенной запятыми. Если вы выполняете итерацию и выполняете математическую операцию над элементом массива строк, тогда этот элемент будет обрабатываться как число при выполнении, но все равно у вас есть строковый массив. Для преобразования разделенного запятыми массива строк int см. edit.
arr = strVale.split(',');
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]));
? "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]
Вы можете использовать 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));
просто вам нужно использовать несколько методов для этого, чтобы это!
var strVale = "130,235,342,124";
var resultArray = strVale.split(',').map(function(strVale){return Number(strVale);});
вывод будет массивом чисел.
Метод split() используется для разбиения строки на массив подстрок и возвращает новый массив.
Syntax:
string.split(separator,limit)
arr = strVale.split(',');
Вы можете разделить и преобразовать, как
var strVale = "130,235,342,124 ";
var intValArray=strVale.split(',');
for(var i=0;i<intValArray.length;i++{
intValArray[i]=parseInt(intValArray[i]);
}
Теперь вы можете использовать intValArray в логике.
Решение:
var answerInt = [];
var answerString = "1,2,3,4";
answerString.split(',').forEach(function (item) {
answerInt.push(parseInt(item))
});
Это простое и быстрое решение, когда строковое значение соответствует запятой (,).
Но если строка с последним символом с запятой, что делает пустой элемент массива, и это также удаляет лишние пробелы вокруг него.
"123234345"
Поэтому я предлагаю использовать push()
var arr = [], str="123,234,345,"
str.split(",").map(function(item){
if(item.trim()!=''){arr.push(item.trim())}
})
Все приведенные ответы пока что дают неожиданный результат для строки типа ",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
мы не можем объединить оба шага фильтра.