言語をハックするのはいつも楽しいので、好奇心だけがこの質問を後援します。より簡潔な方法で配列のインデックスを取得する方法はありますか?
何らかの種類のオブジェクトを保持する配列があるとします。オブジェクトにはidプロパティがあります。 Idは空の文字列、偽、nullまたは任意の偽の値にすることはできません。配列の長さはゼロです。私はこの値の索引(存在する場合)を取得し、ループが見つかるとすぐに終了したいと考えています。
var id = /some value to check/;
var index;
for (var i = 0, item; item = arr[i],
item===undefined?false:item.id==id?(index=i,false):true; i++);
あなたはどう思いますか?
コードは "あまりにも巧妙"なので、 'break'を使って本体にループとして書き込む方がより明確になるかもしれません(冗長ではありません)。現実の世界では、通常、高次/既存の関数をほとんどの場合使用します。これにより、明快さを失うことなく '簡潔さ'が追加されます。 – user2864740
私はこれがhttp://codereview.stackexchange.com/に属していると思います。 – mplungjan
@ user2864740 - 私はそれがもっと冗長かもしれないことを完全に承知しています。実際には、多くの方法で記述することができます。しかし、より簡潔にできるのであれば私は興味があります。しかし、ブレークを使用しないでください - それはループを壊す "汚い"方法です。通常はループの本体にチェックを入れます。 – Hibryda