Javascript 查找数组并将其移动到多维数组的开头

Javascript 查找数组并将其移动到多维数组的开头,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我一直在尝试开发一种将数组移动到数组开头的方法 我遇到的问题是,我使用的是前一个问题中建议的: channelArrStatus.unshift(channelArrStatus.pop()); 问题是,它只会删除最后一个值并将其粘贴在开始处 但是,如果每次我需要它定位时,值都不同,如果满足条件,则将满足条件的数组移动到数组的开头 我需要做什么 在查找之前-['477','RINGING']: [ [ '487', 'RINGING' ], [ '477', 'RINGING' ],[ '48

我一直在尝试开发一种将数组移动到数组开头的方法

我遇到的问题是,我使用的是前一个问题中建议的:

channelArrStatus.unshift(channelArrStatus.pop());
问题是,它只会删除最后一个值并将其粘贴在开始处

但是,如果每次我需要它定位时,值都不同,如果满足条件,则将满足条件的数组移动到数组的开头

我需要做什么

在查找之前-['477','RINGING']:

[ [ '487', 'RINGING' ], [ '477', 'RINGING' ],[ '488', 'RINGING' ] ]
[ [ '487', 'RINGING' ], [ '477', 'RINGING' ],[ '488', 'RINGING' ] ]
之后:

[[ '477', 'RINGING' ],[ '487', 'RINGING' ],[ '488', 'RINGING' ] ]
[ [ '488', 'RINGING' ],[ '487', 'RINGING' ], [ '477', 'RINGING' ] ]
当前正在发生的事情

之前:

之后:

[[ '477', 'RINGING' ],[ '487', 'RINGING' ],[ '488', 'RINGING' ] ]
[ [ '488', 'RINGING' ],[ '487', 'RINGING' ], [ '477', 'RINGING' ] ]
理想情况下,当满足某个条件时,它应该将该数组移动到我制作的JSFIDLE的开始处&下面的代码是一个示例:

var channelArrStatus = [ [ '477', 'RINGING' ], [ '487', 'NOT_INUSE' ], [ '488', 'RINGING' ]];
var state = "NOT_INUSE";

function testArray(){
if (state === "NOT_INUSE") {
      var name = "487";
      var status = "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") {
              setTimeout(function () {
                channelArrStatus[index][1] = status;
                if(channelArrStatus[index][1] === status){
                channelArrStatus.unshift(channelArrStatus.pop());
                document.write(channelArrStatus);
                }
              }, 4000);
            }
          }   
        }
      }
      }
      }

      testArray();

我知道它为什么不起作用,但我已经尽了最大努力将它找到的阵列移动到最开始


有什么想法吗?

使用
unshift
splice

var input = ['aa', 'bb', 'cc', 'dd'],
    index = input.indexOf('cc');
Array.prototype.unshift.apply(input, input.splice(index, 1));

此方案使用一个函数进行查找,并返回用于拼接和取消移位的索引

var数据=[['487','RINGING'],['477','RINGING'],['488','RINGING'],
索引=函数(数组、搜索){
var指数=-1;
array.some(函数(a,i){
if(a.every(函数(b,j){返回b==search[j];})){
指数=i;
返回true;
}
});
收益指数;
}(数据,['477','RINGING']);
~index&&data.unshift(data.splice(index,1)[0]);
document.write(''+JSON.stringify(数据,0,4)+'')