我一直在尝试使用带有MD数组的unshift函数,但我不能让它相应地工作。
我正在使用shift okay,它可以像预期的那样完成所需的操作但不会移动。
以下是我正在使用的数组:
[ [ '487', 'RINGING' ], [ '477', 'RINGING' ] ]
当我尝试对其进行非移位时,它会显示以下内容:
[ [ '487', 'RINGING' ], [ '477', 'RINGING' ], 2 ]
我只需将477数组移动到开头就像这样:
[ [ '477', 'RINGING' ], [ '487', 'RINGING' ]]
我正在使用的代码:
var channelArrStatus = [ [ '477', 'RINGING' ], [ '487', 'RINGING' ]];
function monitor_channel(event, channel) {
if (event.device_state['state'] === "RINGING") {
var name = "User_487";
var status = "NOT_INUSE"
var index = 0;
if (channelArrStatus.length === 0) {
var chanar = new Array(name, status);
channelArrStatus.push(chanar);
} else {
var found = false;
for (var i in channelArrStatus) {
var channelArrStatusElem = channelArrStatus[i];
if (channelArrStatusElem[0] === name) {
index = i;
found = true;
if (channelArrStatus[index][1] !== "DND") {
channelArrStatus.push(channelArrStatus.unshift());
setTimeout(function () {
channelArrStatus[index][1] = status;
}, 10000);
}
}
}
}
}
我无法通过unshift将数组移动到数组的开头作为高亮显示。
有什么建议吗?
编辑:JSFiddle
答案 0 :(得分:0)
电话.unshift()
不包含任何内容并返回数组的长度 - 2
在您的情况下 - 这就是您推送的价值。
你要么
channelArrStatus.push(channelArrStatus.shift()); // no un-
或
channelArrStatus.unshift(channelArrStatus.pop());
那就是说,你应该use literal notation instead of the Array
constructor和avoid for in
enumerations on arrays。
答案 1 :(得分:0)
在这一行
channelArrStatus.push(channelArrStatus.unshift());
您正在将数组的长度添加到数组的 end 。
如果要将元素添加到数组的开头,只需调用unshift
。
channelArrStatus.unshift(element);