このコードを持っているとしましょう
var arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
配列から id = 3 の項目を削除したいのですが、スプライシングなしでこれを行う方法はありますか? アンダースコアなどを使用する方法はありますか?
よろしくお願いします!
ベストアンサー1
単純な JavaScript を使用するだけで、この質問にはすでに回答されています。オブジェクトのプロパティによって配列からオブジェクトを削除する。
underscore.jsを使用すると、.findWhere
と.without
:
var arr = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}, {
id: 3,
name: 'c'
}];
//substract third
arr = _.without(arr, _.findWhere(arr, {
id: 3
}));
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
ただし、この場合はいずれにせよ新しい配列を作成しているので、単純に_.filter
ネイティブArray.prototype.filter
関数を使用するか (他の質問に示されているように) を使用できます。そうすれば、ここでのように 2 回反復するのではなく、配列を 1 回だけ反復することになります。
配列を変更したい場合所定の位置に、 を使用する必要があります.splice
。 これは他の質問にも示されていますが、 undescore はそのための便利な機能を提供していないようです。