Javascript: How to combine a value from an array with index 0?


I am trying to remove a value from an array using splicing. starting at 0 and ending at 0 splicing, but it does not delete the value with index 0. I added the getItemRow function to check the index of the view, which returns 0. I reset the array values ​​to the warning, and it still displays the views that should be deleted. invalidElement.splice (indexValue, indexValue); works as expected for indexes that are NOT 0. Why is this happening and how can I remove a value with index 0?

Javascript code:

var invalidElement = new Array("species", "alias", "gender", "breeding", "birth_date"); //This function will be removed once fixed!! function getItemRow() { var myPosition=-1 for (i=0;i<invalidElement.length;i++) { if(invalidElement[i]=="species") { myPosition = i; break; } } alert(myPosition) } function validateElement(formId, element, selector, errorContainer) { getItemRow()//for testing purposes //var indexValue = $.inArray(element, invalidElement); var indexValue = invalidElement.indexOf(element); alert(element); $.ajax({ type: 'POST', cache: false, url: "validate_livestock/validate_form/field/" + element, data: element+"="+$(selector).val(), context: document.body, dataType: 'html', success: function(data){ if (data == "false") { $(errorContainer).removeClass('element_valid').addClass('element_error'); invalidElement = element; alert(invalidElement.join('\n'))//for testing purposes //alert(indexValue); } else { $(errorContainer).removeClass('element_error').addClass('element_valid'); invalidElement.splice(indexValue, indexValue); alert(invalidElement.length);//for testing purposes alert(invalidElement.join('\n'))//for testing purposes } } }); } $("#species").change(function(){ validateElement('#add_livestock', 'species', '#species', '.species_error_1') }); 
+9
javascript arrays splice
source share
4 answers

Splice can work in two modes; to delete or insert items.

When deleting elements, you specify two parameters: splice(index, length) , where index is the starting index, and length is the positive number of elements to delete (fyi: passing "0", as in your example, this is "deleting zero elements starting with index "). In your case, you will want:

 invalidElement.splice(indexValue, 1); // Remove 1 element starting at indexValue 

When inserting elements, you specify (at least) three parameters: splice(index, length, newElement, *additionalNewElements*) . In this overload, you usually pass 0 as the second parameter, that is, insert new elements between existing elements.

  var invalidElements = ["Invalid2", "Invalid3"]; invalidElements = invalidElements.splice(0, 0, "Invalid1"); 
+11
source share

I think you want splice(0, 1) .

The second argument is how much you want to remove ...

An integer indicating the number of old array elements to delete. If howMany is 0, items are not deleted.

Source

+15
source share

There is also a convenience function for deleting the first element in an array:

 array.shift(); 

See: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/shift .

+11
source share

The Mozilla Dev Center - Array.splice states that the second parameter is the 'howMany' elements to delete.

I'm not sure how your code worked when it passed to indexValue as the number of elements to delete, unless you removed it from the end of the array.

0
source share

All Articles