配列のなかに[0,0]があるかを探索する方法は、配列のfindメソッドに述語(predicate)を記述することが考えられます。
JavaScript
1[[0,0],[0,1]].find(function(x){return Array.isArray(x) && x.length == 2 && x[0] == 0 && x[1] == 0})
2← Array [ 0, 0 ]
3
4[[1,1],[0,1]].find(function(x){return Array.isArray(x) && x.length == 2 && x[0] == 0 && x[1] == 0})
5← undefined
もし配列を検索するための述語が必要であればArrayクラスに以下のユーザー関数を追加すればよろしいかと思います。
JavaScript
1Array.isEqualTo = function(x){return function(y){if (!Array.isArray(y) || y.length != x.length) return false; for (let i = 0; i < x.length; i++) {if (x[i] != y[i]) return false;} return true;}}
使い方はこのような感じです。
JavaScript
1[[1,2,3],[4,5,6]].find(Array.isEqualTo([0,0,0]))
2← undefined
3[[1,2,3],[4,5,6]].find(Array.isEqualTo([1,2,3]))
4← Array(3) [ 1, 2, 3 ]
[追記]
Arrayのような組み込みオブジェクトの中身を書き換えることは、JavaScriptの言語仕様上可能なのですが、混乱を招くことがあるので推奨されないようです。プログラムの記述方法としては「文学的に優れている」ので私は興味深いし好きなのですが、職場やオープンソースなど複数人が使用するプロジェクト、また、jQueryなどのライブラリを多用するような場合には組み込みオブジェクトを書き換えないよう注意してください(組み込みオブジェクトを書き換える代わりにユーザー定義の関数かローカル変数に格納したり匿名関数の形で使用することが推奨されます)。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/06 17:42