2016-04-22 4 views
2

У меня есть кнопки с общим классом (buttons). Как я могу добавить их ID s в массив в обратном порядке?создать массив в обратном порядке

var yourArray = []; 
$('.buttons').each(function() { 
    yourArray.push($(this).prop('id')); 
}); 
+0

'Array.unshift()'? – evolutionxbox

+0

Добавить 'yourArray.reverse();' вне цикла – Mihai

+0

@Mihai - разве это не просто отменить уже созданный массив? 'unshift', по крайней мере, позволяет создавать массив с обратной стороны (« в обратном порядке ») – evolutionxbox

ответ

4

Вы можете создать массив, добавив каждый элемент в начало массива с помощью unshift():

var yourArray = []; 
$('.buttons').each(function() { 
    yourArray.unshift(this.id); 
}); 

В качестве альтернативы вы можете создать его в текущем порядке, а затем reverse() его. Также обратите внимание, что вы можете использовать map() для создания массива изначально:

var yourArray = $('.buttons').map(function() { 
    return this.id; 
}).get().reverse(); 

Наконец, вы можете использовать this.id вместо создания объекта JQuery только для доступа к свойству уже доступному без необходимости создания объекта.

+1

@Becky. В массиве POJS нет метода 'each()'. Вы должны использовать обычный цикл 'for' или' $ .each (yourArray, function() {...}); ' –

+0

Возможно ли отменить порядок в рамках существующей функции' each() '? '$ ('. buttons'). each (function() {' – Becky

+1

То, что делает первый пример кода –

2

Вы можете сделать что-то простое с map() и reverse()

var yourArray = $('.buttons').map(function() { 
 
    return this.id; // get the id 
 
}) 
 
.get() // get the array 
 
.reverse(); // reverse the array 
 

 
console.log(yourArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="a" class="buttons"></button> 
 
<button id="b" class="buttons"></button>

+0

Как использовать новый массив create, если мне нужно использовать его в другом 'each (function() {'? – Becky

+0

' yourArray.forEach (function (v) {...... ..................................}); ', используйте' forEach' или '$ .each() ' –

+0

Спасибо. Я хочу использовать его в существующей функции' each() '. Я попробовал' yourArray.each (function() {...}); 'похоже, не работает. – Becky

Смежные вопросы