2016-07-20 10 views
-1

Ich versuche, ein Array zu schneiden, nachdem ein Element in es verwendet wurde, aber der Code tut das nicht:ein Array in Javascript Aufschneiden

vm.removeItem = function() { 
    for(let i = 0; i < vm.array.length; i++) { 
    if(vm.array[i].item === vm.item) { 
     vm.array.splice(i, 1); 
     break; 
    } 
    } 
}; 

Gibt es etwas, was ich falsch mache?

+1

diese getaggt AngularJS zu sein braucht ? –

+0

@CrescentFresh, nicht havet, aber ich habe es trotzdem gedacht, ich bin ein Neuling in Angular und JS – John

+0

Was ist vm? Welchen Gegenstand versuchst du abzuschneiden? Die Funktion benötigt keine Parameter, daher kann ich nur das erste oder das letzte Element annehmen. Aber wenn das der Fall ist, ist keine for-Schleife nötig. –

Antwort

0

Ein Dummy-Code wird angenommen. Der zu entfernende Artikel wird in einem Artikel gespeichert. Nachdem removeItem aufgerufen wurde, wird es entfernt.

var vm = { 
 
    array: [{ 
 
    lp: 1 
 
    }, { 
 
    lp: 2 
 
    }, { 
 
    lp: 3 
 
    }], 
 
    item: 2 
 
}; 
 

 
vm.removeItem = function() { 
 
    for (let i = 0; i < vm.array.length; i++) { 
 
    if (vm.array[i].lp === vm.item) { 
 
     vm.array.splice(i, 1); 
 
     break; 
 
    } 
 
    } 
 
}; 
 

 
vm.removeItem(); 
 
console.log(vm.array);

+0

@John Bitte überprüfen Sie diesen Code, ist das wonach Sie gesucht haben? Ich habe versucht, einen Dummy-Code zu erstellen, um es funktionsfähig zu machen. – Ayan

0

nach Ihren vorhandenen Code, es scheint, wie Ihre vm Struktur sieht wie folgt aus:

var vm = { 
    item: 'ef', 
    array: [ {item: 'ab'}, {item : 'cd'}, {item: 'ef'}, {item: 'gh'} ] 
}; 

Wenn Sie von vm.array das Element, dessen item entfernen möchten Attribut ist vm.item Sie können folgendes tun:

vm.array = vm.array.filter(function(e) { return e.item != vm.item; }); 

Allerdings denke ich , dass Ihr Code wie erwartet funktionieren sollte und genau dasselbe tun. Das Problem könnte also woanders liegen.

0

Dieses Remove a particular element from an array in JavaScript? ein Duplikat

Sowieso sein kann, kann man immer etwas tun, wie folgt aus:

function remove(arr, item) { 
    for(var i = arr.length; i--;) { 
    if(arr[i] === item) { 
     arr.splice(i, 1); 
    } 
    } 
} 

Und hier ist die Nutzung:

// an array 
var entries = [ 
    {name:'Tim'}, 
    {name:'John'} 
]; 
// add an item to the array 
var mark = {name:'Mark'}; 
entries.push(mark); 

// you can see it's in the array now 
entries.forEach(x => console.log(x.name)); 

// remove it from the array 
remove(entries,mark); 

// you can see it's not there now 
entries.forEach(x => console.log(x.name));