1. ホーム
  2. javascript

[解決済み] UnderscoreJSを使用して配列から項目を削除する

2022-02-19 08:26:18

質問

次のようなコードがあるとします。

var arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];

で、id = 3 の項目を配列から削除したいのです。スプライシングせずにこれを行う方法はありますか?アンダースコアかそのようなものを使用して何かかもしれませんか?
ありがとうございます。

解決方法は?

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はそのための便利な機能を提供していないようです。