所以我目前有一个多维数组,我正在尝试拼接一个值,索引是一个刚被删除的通道名称,然后删除该值所在的值。
但它没有这样做,它总是拼接最后一个值,我已经调试以确保传递正确的值,我想删除但是.....仍然无济于事,我不是对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值的索引,那么又称:
希望你们能对此有所了解。
编辑:我知道这适用于单个普通数组。
答案 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.
}