0

配列があると想像してください

arr = ["one", "two", "three"]

とロジック

if "one" in arr
  processOne()

if "two" in arr
 processTwo()

if <<there is another items in array>>
  processOthers()

最後 にどの条件を書けばいいifですか?関数は見つかりまし_.differenceたが、要素 ("one"、"two" ...) を複数回書き込みたくありません。

編集

  1. if else if else0..N プロセス関数を呼び出す必要があるため、適切ではありません。
  2. これは配列の例です。しかし、このコードがオブジェクトになるとしたら、どのようになるでしょうか?
  3. 配列に重複がありません
4

2 に答える 2

3

.indexOfメソッドを使用して。

var index;
if ( (index = arr.indexOf('one')) !== -1) {
  processOne();
  arr.splice(index, 1);
}

if ((index = arr.indexOf('two')) !== -1) {
  processTwo();
  arr.splice(index, 1);
}

if (arr.length > 0) {
  processOthers();
}

更新: または、配列をループすることもできます。

var one = false, two = false, others = false;
for (var i = 0; i < arr.length; i++) {
  if (arr[i] === 'one' && !one) {
    processOne();
    one = true;
  } else if (arr[i] === 'two' && !two) {
    processTwo();
    two = true;
  } else (!others) {
    processOthers();
    others = true;
  }
  if (one && two && others) break;
} 
于 2012-08-27T10:01:25.433 に答える
0

代わりにこれを行う必要があります。

あなたが持っている場合:

arr = ["one", "two", "three"]

それで:

if (something corresponds to arr[one])
{
  processOne()
}

elseif (something corresponds to arr[two])
{
   processTwo()
}

else (something corresponds to arr[three])
{
   processOthers()
}

それはそれを行う必要があります。

于 2012-08-27T10:05:00.800 に答える