jquery преобразовать строку num в int

Как я могу принять жало, содержащее такие числа, как

1 - 2 - 3 - 4 - 5 - 6

и преобразовать каждое число в целое число?

Я пробовал следующее, но он просто возвращает первое целое число.

var a = '1 - 2 - 3 - 4 - 5 - 6';
var b = parseInt( a.split('-') );

$('#b').append(b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='b'></div>


person Sergio    schedule 01.08.2017    source источник
comment
В вашем случае нет смысла, так как он все равно преобразуется обратно в строку, когда вы его добавляете.   -  person T.J. Crowder    schedule 01.08.2017
comment
@T.J.Crowder, он удалит начальные нули в строке (строках), хотя   -  person Timothy Groote    schedule 01.08.2017
comment
Да, но мне нужно что-то сделать с целыми числами перед добавлением в браузер.   -  person Sergio    schedule 01.08.2017
comment
@TimothyGroote: Однако в вопросе их нет. :-) Это также усекло бы числа с плавающей запятой, но в вопросе их тоже нет.   -  person T.J. Crowder    schedule 01.08.2017
comment
parseInt не ожидает массив в качестве param1 — см. w3schools.com/jsref/jsref_parseInt.asp   -  person CompanyDroneFromSector7G    schedule 01.08.2017


Ответы (5)


Это потому, что string.split возвращает массив строк.

Если вы хотите обработать каждое отдельное значение, возвращаемое split, выполните цикл по массиву и проанализируйте элементы как числа во время итерации.

Затем вы можете делать с проанализированным числом, как хотите. (в этом примере он умножает каждое число на два и добавляет вывод)

var a = '1 - 2 - 3 - 4 - 5 - 6';
var splitarray = a.split('-')
    
for(var i=0; i < splitarray.length; i++)
{
  var valueAsInt = parseInt(splitarray[i]);
  //do whatever you want with valueAsInt, like for instance
  valueAsInt *= 2;

  //adding the br so we can see what the individual numbers are
  $('#resultDiv').append(valueAsInt + "<br />"); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="resultDiv"></div>

person Timothy Groote    schedule 01.08.2017
comment
Откуда берутся числа var в цикле for? ты хотел сказать расщепление? - person Sergio; 01.08.2017
comment
я напортачил. это уже исправлено ;) - person Timothy Groote; 01.08.2017
comment
Спасибо, Тимоти Гроот! - person Sergio; 01.08.2017

parseInt преобразует одну строку, а не массив строк.

Вы можете использовать jquery $.each для анализа каждого элемента и возврата массива int.

(ввод этого в html, как в вопросе, и фрагмент ниже на самом деле не имеет большого значения, поскольку он будет преобразован обратно в строку для html, но значениями можно манипулировать один раз в массиве).

var a = '1 - 2 - 3 - 4 - 5 - 6';
var arr = $.each(a.split('-'), function() { return parseInt(this, 10); });

var a = '1 - 2 - 3 - 4 - 5 - 6';
var b = $.each(a.split('-'), function() { return parseInt(this, 10); });
// b is now an array of ints
$("#result").html(b.join(","))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='result'>
</div>

person freedomn-m    schedule 01.08.2017

В вашем случае нет смысла, так как он все равно преобразуется обратно в строку, когда вы его добавляете. Для номеров, которые вы предоставили, преобразование не будет иметь никакого значения.

Если у вас есть те, где это будет иметь значение, см. комментарии:

var a = '1 - 2 - 3 - 4 - 5 - 6';
// Let's not look this up every time
var b = $("#b");
// Split and loop through the parts
a.split('-').forEach(function(entry) {
  // Append each part after converting to int.
  // Note the 10 at the end: That's the number base.
  b.append(parseInt(entry, 10));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='b'></div>

person T.J. Crowder    schedule 01.08.2017

Вы должны разделить свою строку на основе -, а затем перебрать ее, чтобы добавить каждый элемент в свой html-элемент.

var a = '1 - 2 - 3 - 4 - 5 - 6';
var arr = a.split(' - ');
var ele=$('#b');
for(var i=0; i < arr.length; i++)
{
    ele.append(parseInt(arr[i]));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='b'></div>

person RAUSHAN KUMAR    schedule 01.08.2017

Это связано с тем, что функция split() возвращает массив, а функция parseInt() не поддерживает массив на входе.

Вы должны анализировать каждый элемент массива один за другим.

Попробуйте с этим:

var a = '1 - 2 - 3 - 4 - 5 - 6';
// Split string into array
var b = a.split('-');

var c = [];

// convert from string to integer and push it into c array
b.forEach(function (item, index, arr) {
   c.push(parseInt(item.trim()));
});

$('#b').append(c);
person Maksym Bodnar    schedule 01.08.2017