如何检查数组中的剩余项目?

时间:2012-08-27 10:00:04

标签: javascript backbone.js

想象一下,我有一个数组

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. 数组没有重复项

2 个答案:

答案 0 :(得分: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;
} 

答案 1 :(得分: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()
}

应该这样做。