Удаление значения из массива в определенном месте
Я понимаю, что на эту тему много тем, но я считаю, что это другое:
Цель состоит в том, чтобы получить значение из массива в случайном месте, а затем удалить это значение.
Я использую эту часть John Resig (создатель jQuery) для удаления элемента, но он, похоже, не прослушивает местоположение, которое я ему даю
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
вот как я его использую
var elements = ['#1','#2','#3','#4']
var R1 = Math.floor(Math.random() * elements.length),
E1 = elements.slice(R1,1)
elements.remove(R1)
var R2 = Math.floor(Math.random() * elements.length),
E2 = elements.slice(R2,1)
elements.remove(R2)
var R3 = Math.floor(Math.random() * elements.length),
E3 = elements.slice(R3,1)
elements.remove(R3)
var R4 = Math.floor(Math.random() * elements.length),
E4 = elements.slice(R4,1)
Проблема заключается в функции remove, она не работает при удалении объекта в определенном месте, которое я считаю.
Ответы
Ответ 1
Вы используете elements.slice(R3,1)
неправильно. Второй аргумент означает не длину массива, который вы хотите получить, но индекс на основе нуля элемента, когда метод среза должен останавливаться. Таким образом, ваш код говорит "Дайте мне элементы из индекса R3 до индекса 1" и единственный раз, когда он будет работать: elements.slice(0, 1)
.
Если вам просто нужно получить один элемент - используйте elements[R1]
. Если вам нужно получить массив с одним элементом, вы можете продолжать использовать срез с elements.slice(R1, R1 + 1);