В javascript установка переменной в значение перезаписывает предыдущее значение. Тип не применяется, поэтому эти строки:
let inputArray = [];
inputArray = $('.features');
совпадает с
let inputArray = $('.features');
$()
возвращает коллекцию jquery, а не массив javascript ; Конечно, есть сходства, но это не «массив».
Чтобы получить значения, вы можете l oop через коллекцию или вы можете использовать .map
для извлечения значений, например:
var valuesArray = $('.features').map(function() {
return $(this).val();
}).toArray();
function maintest() {
for (i = 0; i < 5; i++) {
$("<input>").attr({ "class": "features" })
.appendTo("#mainDiv")
.val("input" + i);
$("<br/><br/>").appendTo("#mainDiv");
}
$("<button> Click me! </button>").click(function() {
let inputArray = $('.features');
var values = inputArray.map(function() {
return $(this).val();
}).toArray();
console.log(values);
}).appendTo("#mainDiv");
}
$(() => maintest());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="mainDiv"></div>