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函数,但我不想多次编写元素(“一”、“二”……)。

编辑

  1. if else if else不适合,因为我需要调用 0..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 回答