アイテムが繰り返されていない10個のアイテム(値プリミティブ、オブジェクトではない)のスタックを保持する必要があります。ここに私の最初の刺す実装です。改善のための提案? JS 1.6、inArray
がarray.indexOf(element) != -1
のように書くことができるのでJavaScriptの非繰り返しスタック
var items = [];
function newItem() {
return Math.floor(Math.random() * 50);
}
function inArray(arr, val) {
var in_arr, i;
in_arr = false;
i = arr.length;
if (i < 1) {
return in_arr;
}
do {
if (arr[i - 1] === val) {
in_arr = true;
break;
}
} while (--i);
return in_arr;
}
function addItem() {
var new_item;
while (items.length > 9) {
items.shift();
}
do {
new_item = newItem();
} while (inArray(items, new_item));
items.push(new_item);
}
私は同じメソッド内で 'new_item'と' newItem'を全く違うものに使うのは嫌いです。 – Douglas
以前に[indexOf](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/indexOf)を使用しましたか?私はあなたの 'inArray'メソッドを置き換えることができると思います。 – Douglas
@Douglas:すべてのブラウザでサポートされているわけではありません。 IE 9で動作しないことを意味します。 –