多维数组 - 根据indexOf值

时间:2015-11-16 10:03:01

标签: javascript arrays

所以我目前有一个多维数组,我正在尝试拼接一个值,索引是一个刚被删除的通道名称,然后删除该值所在的值。

但它没有这样做,它总是拼接最后一个值,我已经调试以确保传递正确的值,我想删除但是.....仍然无济于事,我不是对MD阵列有很多经验,但到目前为止这已经证明是一种痛苦。

我试图摆弄指数,但总是结果相同或恰恰相反。

以下是拼接功能的代码:

    function stasisEnd(event, channel) {
    console.log(util.format(
        'Channel %s just left our application', channel.name));
    console.log(channel.name);

    //This is where the channels are removed from the array once they leave or are kicked from the channel.
    var index = channelArr.indexOf(channel.name);
    channelArr.splice(index, 1);
    console.log(channelArr);
  }

这就是数组里面有3个数组的样子:

[["1447667845.0","SIP/488-00000000"],["1447667858.4","SIP/477-00000002"],["1447667847.1","SIP/487-00000001"]]

到目前为止,它总是删除我要删除数组的最后一个通道,如果它有关闭channel.name值的索引,那么又称:

  1. SIP / 477-00000002已被删除。
  2. 根据该值删除第二个数组。
  3. 可以继续根据channel.name。
  4. 删除数组

    希望你们能对此有所了解。

    编辑:我知道这适用于单个普通数组。

1 个答案:

答案 0 :(得分:2)

channelArr.indexOf(channel.name);仅当“channelArr”包含一个与channel.name相等的元素时才起作用,但“channelArr”不包含“strings”而是“arrays”,因此它不起作用。您必须使用两个简单的数组来代替整个数组,而不是使用MD数据

尝试这样的事情

var index = 0;
var foundIndex = false;
for( var i in channelArr ) {
  var channelArrElem = channelArr[ i ];
  if( channelArrElem[ 1 ] == channel.name ) {
    index = i;
    foundIndex = true;
  }
}
if( foundIndex ) {
  channelArr.splice(index, 1);
  console.log(channelArr);
  updateSip();
} else {
  // Something went very wrong and the channel wasn't there.
}