###前提・実現したいこと
オブジェクトから特定要素、例えばあるプロパティの値が指定した値と一致する場合、その要素をオブジェクトから完全に削除するもっともスマートな記述方法。
###該当のソースコード
//オブジェクト
var object = [{a: 1}, {a: 2}, {a: 3}];
//ある条件、例えばa === 2 と合致する2番目の要素を完全に削除したい。結果としては以下のように、null値やundefinedは含まないように
object = [{a: 1}, {a: 3}];
###試したこと
Array.prototype.forEach.call(object, (e, i, s) => {
if(e.a === 2) {
//ここで色々試してみた...
}
});
delete e[i]; ⇒ null、undefinedになってしまう。
s.splice(i, 1); ⇒ エラーも出ないが、オブジェクト自体も変化せず。
これはうまくいく...
var object = (function() {
var _object = [];
Array.prototype.forEach.call(object, (e, i, s) => {
if(e.name !== 2) {
_object.push(e);
}
})
return _object;
})();
でも何かすっきりしない。新しい要素を作成せずに単純に切り離すようなことはできないのでしょうか。どんなコードでも参考にしてみたいので、お返事をくださいー!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/08 06:14