The go-to solution for most would be to use the built-in method, Array.prototype.filter
. This differs from Polywhirl's answer as it constructs a new array and replaces the old one -
let users = [
{name: 'peter', number:'555'},
{name: 'alice', number:'555'},
{name: 'peter', number:'111'},
{name: 'bobby', number:'555'},
{name: 'peter', number:'555'},
{name: 'steve', number:'777'},
{name: 'peter', number:'555'},
{name: 'peter', number:'999'},
];
users = users.filter(({ name, number }) => {
return !(name == "peter" && number == "555")
});
console.log(JSON.stringify(users));
[
{"name":"alice","number":"555"},
{"name":"peter","number":"111"},
{"name":"bobby","number":"555"},
{"name":"steve","number":"777"},
{"name":"peter","number":"999"}
]
Using De Morgan's Law we can write an equivalent logical expression that may feel more natural for use with filter
-
let users = [
{name: 'peter', number:'555'},
{name: 'alice', number:'555'},
{name: 'peter', number:'111'},
{name: 'bobby', number:'555'},
{name: 'peter', number:'555'},
{name: 'steve', number:'777'},
{name: 'peter', number:'555'},
{name: 'peter', number:'999'},
];
users = users.filter(({ name, number }) => {
return name != "peter" || number != "555" // <- equivalent
});
console.log(JSON.stringify(users));
// []
[
{"name":"alice","number":"555"},
{"name":"peter","number":"111"},
{"name":"bobby","number":"555"},
{"name":"steve","number":"777"},
{"name":"peter","number":"999"}
]