2013-06-15 2 views
18

Я понимаю, что есть много тем по этому вопросу, но я считаю, что это одна другие:Удаление значения из массива в определенном месте

Цель состоит в том, чтобы получить значение из массива на случайном месте, то это удалить стоимость.

Я использую эту часть Джон 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) 

Проблема заключается в удалении функции, она не работает при удалении объекта в определенном месте, я считаю.

+1

Вы этого не писали? Это точно такая же реализация, которую написал Джон Ресиг (создатель jQuery). – barndog

+0

это, я нашел первую часть здесь извините за то, что не упоминал об этом, я новичок здесь – GdeBrock

+0

Что должен делать ваш код? – georg

ответ

4

Вы используете elements.slice(R3,1) неправильный. Второй аргумент означает не длину массива, который вы хотите получить, но индекс на основе нуля элемента, когда метод среза должен останавливаться. Поэтому ваш код говорит «Дайте мне элементы из индекса R3 до индекса 1», и единственный раз, когда он будет работать: elements.slice(0, 1). Если вам просто нужно получить один элемент - используйте elements[R1]. Если вам нужно получить массив с одним элементом, вы можете продолжать использовать срез с elements.slice(R1, R1 + 1);

+0

, которая решает его, спасибо! – GdeBrock

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