私が何かを持っているなら
[Object(id:03235252, name:"streetAddress"), Object(id:32624666, name:"zipCode")...]
名前が「zipCode」に設定されている配列からオブジェクトを削除するにはどうすればよいですか?
私が何かを持っているなら
[Object(id:03235252, name:"streetAddress"), Object(id:32624666, name:"zipCode")...]
名前が「zipCode」に設定されている配列からオブジェクトを削除するにはどうすればよいですか?
既存の配列を変更する必要がある場合は、splice()
.
for (var i = array.length - 1; i > -1; i--) {
if (array[i].name === "zipCode")
array.splice(i, 1);
}
逆にループしていることに注意してください。.splice(i, 1)
これは、 を実行すると配列のインデックスが再作成されるという事実に対処するためです。
順方向ループを実行した場合、インデックスをスキップしないようにするために、実行するi
たびに調整する必要もあります。.splice()
arr = arr.filter(function (item) {
return (item.name !== 'zipCode');
});
配列でプロトタイプを実行することは悪い習慣であるため、この回答を更新しました。そのため、提案を使用してより良いコードを書く人々をここに配置することをお勧めします。
const myArr = [
{
name: "lars",
age: 25
}, {
name: "hugo",
age: 28
}, {
name: "bent",
age: 24
}, {
name: "jimmy",
age: 22
}
];
const findAndRemove = (array, prop, value) => {
return array.filter((item) => item[prop] !== value);
}
const newArr = findAndRemove(myArr, 'name', 'jimmy')
console.log(newArr)
新しいコードはここで見つけてテストできます
これは、アレイのプロトタイプでも実行できます
Array.prototype.containsByProp = function(propName, value){
for (var i = this.length - 1; i > -1; i--) {
var propObj = this[i];
if(propObj[propName] === value) {
return true;
}
}
return false;
}
var myArr = [
{
name: "lars",
age: 25
}, {
name: "hugo",
age: 28
}, {
name: "bent",
age: 24
}, {
name: "jimmy",
age: 22
}
];
console.log(myArr.containsByProp("name", "brent")); // Returns false
console.log(myArr.containsByProp("name", "bent")); // Returns true
コードはここで見つけてテストすることもできます
var i = array.length;
while(i-- > 0) {
if (array[i].name === "zipCode")
array.splice(i, 1);
}
yourArray.splice(index,1)
ます。次に、次のいずれかを行います。