2015-11-19 6 views
1

У этого вопроса много, но не могу найти то, что я ищу.Удалить элемент из массива в JavaScript

onClick Я нажимаю элемент на массив, который у меня есть, однако, если в моем массиве есть 3 элемента, я не хочу больше нажимать элементы.

var selectedData = []; 

Я установил свою пустую переменную.

var index = selectedData.indexOf(3); 

я тогда получить индекс моего массива, который является 3

if (index > 3) { 
    selectedData.splice(index, 1); 
} 

Тогда в моей if statement я говорю, если мой индекс, который является 3, больше затем 3, а затем склеить в index и удалить один.

selectedData.push(TheThing); 

Я затем нажмите TheThing на мой массив, если, если заявление выше не соответствует действительности.

Однако, у меня есть переменная var arrayLength = selectedData.length;, которая захватывает длину, и когда я утешаю войти, он начинается в 0 и сращивания пунктов ничего после 4. Не 3.

Любая идея, что я сделал неправильно или неправильно понятый? Благодаря


Более полный пример моего кода

var selectedData = []; 

myElement.on('click', function() { 

    var index = selectedData.indexOf(3); 
     if (index > 3) { 
      selectedData.splice(index, 1); 
     } 
    var arrayLength = selectedData.length; 

    console.log(arrayLength, 'the length'); 

}); 

Так короче говоря, onClick проверить мой массив и удалить что-нибудь после того, как третий, который будет добавлен в мой массив.

+1

Просьба привести полный пример. См. [Mcve] для руководства. –

+0

введите код вместе с таким типом вопросов – azad

+0

Извините, я сейчас обновляю вопрос. – PourMeSomeCode

ответ

0

Я думаю, вам нужно попробовать var arrayLength = selectedData.length -1;

Вы начинаете на 0, как обычный массив, но вы не начать с пустым массивом?

Плюс, когда вы используете .length, он возвращает истинный счетчик массива или коллекции, а не индекс 0. `

1

Вы хотите, чтобы это было как стек или очередь?

Так что ваш код здесь:

var index = selectedData.indexOf(3); 

Не захватывая 3-й индекс - его захвата первый индекс, в котором он видит 3, или -1, если это не так.Заменить, если заявление с,

if (selectedData.length > 3) { 
    selectedData.pop() // removes last element (stack) 
    // or 
    selectedData = selectedData.slice(1) //remove first element (queue) 
} 
0

вы можете переопределить push() метод вашего массива, как это:

var a = []; 
a.push = function(){} 

или как этот

a.push = function (newEl){ 
    if(this.length <3){ 
    Array.prototype.push.call(this, newEl) 
    } 
} 

Это не полный пример, потому что толчок() может потребовать много аргументов, и вы должны также обращаться с этим делом.

0

v ar index = selectedData.indexOf (3); просто дать вам индекс элемента массива, который имеет значение 3 Пример

selectedData = [ 0, 3 , 2]; 
alert(selectedData.indexOf(3)); // this will alert "1" that is the index of the element with value "3" 
0

вы можете использовать этот сценарий

var selectedData = []; 

myElement.on('click', function() { 

    //if selectedData length is less than 3, push items 

}); 
0

Это может работать.

myElement.on('click', function() { 

    if(selectedData.length > 3){ 
     selectedData = selectedData.splice(0, 3); 
    } 

    console.log(selectedData.length, 'the length'); 

}); 
Смежные вопросы