Man ir skaitļu masīvs, un es izmantoju .push()
metodi, lai tajā pievienotu elementus.
Vai ir vienkāršs veids, kā no masīva izņemt konkrētu elementu? Līdzvērtīgs kaut kam tādam kā array.remove(number);
.
Man ir jāizmanto core JavaScript - ietvarstruktūras nav atļautas.
Atrodiet tā masīva elementa indeksu
, kuru vēlaties noņemt, un pēc tam noņemiet šo indeksu ar splice
.
Metode splice() maina masīva saturu, noņemot esošos elementus un/vai pievienojot jaunus elementus.
var array = [2, 5, 9];
console.log(array)
var index = array.indexOf(5);
if (index > -1) {
array.splice(index, 1);
}
// array = [2, 9]
console.log(array);
Otrais splice
parametrs ir noņemamo elementu skaits. Ievērojiet, ka splice
izmaina masīvu tā vietā un atgriež jaunu masīvu, kurā ir noņemtie elementi.
Es nezinu, kā jūs sagaidāt, ka array.remove(int)
uzvedīsies. Man prātā nāk trīs iespējas, ko jūs varētu vēlēties.
Noņemt masīva elementu ar indeksu i
:
array.splice(i, 1);
Ja vēlaties no masīva izņemt katru elementu ar vērtību skaitlis
:
for(var i = array.length - 1; i >= 0; i--) {
if(array[i] === number) {
array.splice(i, 1);
}
}
Ja vēlaties, lai vairs nepastāvētu elements ar indeksu i
, bet nevēlaties, lai mainītos pārējo elementu indeksi:
delete array[i];
Array.prototype.remByVal = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] === val) {
this.splice(i, 1);
i--;
}
}
return this;
}
//Call like
[1, 2, 3, 4].remByVal(3);
Array.prototype.remByVal = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] === val) {
this.splice(i, 1);
i--;
}
}
return this;
}
var rooms = ['hello', 'something']
rooms = rooms.remByVal('hello')
console.log(rooms)