Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多维数组-基于indexOf值拼接整个数组_Javascript_Arrays - Fatal编程技术网

Javascript 多维数组-基于indexOf值拼接整个数组

Javascript 多维数组-基于indexOf值拼接整个数组,javascript,arrays,Javascript,Arrays,所以我现在有一个多维数组,我正试图将一个值与索引拼接在一起,它是一个刚刚被删除的通道名,然后在该值所在的位置删除该值 但它并没有这样做,它总是拼接最后一个值,我已经调试以确保传递正确的值,我想删除该值,但……仍然没有任何效果,我对MD阵列没有太多经验,但到目前为止,这证明是一个痛苦的过程 我曾试图篡改索引,但结果总是相同或相反 以下是拼接功能的当前代码: function stasisEnd(event, channel) { console.log(util.format(

所以我现在有一个多维数组,我正试图将一个值与索引拼接在一起,它是一个刚刚被删除的通道名,然后在该值所在的位置删除该值

但它并没有这样做,它总是拼接最后一个值,我已经调试以确保传递正确的值,我想删除该值,但……仍然没有任何效果,我对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"]]
到目前为止,它总是删除我想要删除数组的最后一个通道,如果它的索引从通道中删除。名称值,因此:

  • SIP/477-0000000 2已被删除
  • 根据该值删除第二个数组
  • 可以继续删除基于channel.name的阵列
  • 希望你们能对此有所了解

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

    channelArr.indexOf(channel.name);仅当“channelArr”包含一个等于channel.name的元素时才起作用,但“channelArr”不包含“字符串”而包含“数组”,因此它不起作用。您必须循环整个数组,或者使用两个简单数组,而不是一个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.
    }
    

    这样做更有意义,而且效果很好,我最初使用的是两个简单的数组。。。。。但是由于我需要实现一些功能,我认为使用MD阵列会更高效,更易于管理。干杯