は、次のデータを考えてみましょう:プロパティと一致する配列からオブジェクトを削除するにはどうすればよいですか?
food = {
id: 1,
name: 'Pizza',
price: 16
};
orders = [
{ food_id: 2, table_id: 5 },
{ food_id: 2, table_id: 5 },
{ food_id: 1, table_id: 5 },
{ food_id: 3, table_id: 5 },
{ food_id: 1, table_id: 5 }
];
私は配列がfood_id
に一致受注から単一の項目を削除したいです。ここに私が試したものです:
removeFoodOrder(food: Food): void {
for (let order of this.orders) {
let match = this.orders.filter((order) => order.food_id == food.id);
match ? this.orders.splice(this.orders.indexOf(order), 1) : null;
break;
}
console.log(this.orders);
}
私はremoveFoodOrder(food)
を呼び出した場合、それは関係なく、私がのparamsに渡すものを食品アイテムの配列から最初の要素を削除しません。
removeFoodOrder(food)
// removes {food_id: 2, table_id: 5} (the first element)
// I want to remove {food_id: 1, table_id: 5},
私は配列から一致する要素を対象とし、それの単一インスタンスを削除します。どこで私は間違えましたか?
あなたはすでに(私は実際にあなたのコードをテストせずにこれを言っているが、私はそれはそれが何であるかだかなり確信して)フィルタで項目を削除したので、それが配列の最初の要素を削除しています – Gab
あなたはループの中で無条件に中断しており、非常に疑わしい方法で三項演算子を使用しています –
@AluanHaddad私は全く同意します。それはちょうど混乱を追加しています – Gab