查找数组并将其移动到Multidimesional数组的开头

时间:2016-03-01 12:40:48

标签: javascript arrays multidimensional-array

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

我遇到的问题是我按照前一个问题的建议使用:

channelArrStatus.unshift(channelArrStatus.pop());

问题是它只会删除最后一个值并将其粘贴在开头。

但是如果每次需要它时值都不同,那么如果条件满足则找到它,然后将符合条件的数组移动到数组的开头。

我需要做什么

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

[ [ '487', 'RINGING' ], [ '477', 'RINGING' ],[ '488', 'RINGING' ] ]

之后:

[[ '477', 'RINGING' ],[ '487', 'RINGING' ],[ '488', 'RINGING' ] ]

目前正在发生什么!

在:

[ [ '487', 'RINGING' ], [ '477', 'RINGING' ],[ '488', 'RINGING' ] ]

之后:

[ [ '488', 'RINGING' ],[ '487', 'RINGING' ], [ '477', 'RINGING' ] ]

理想情况下,当条件满足时,它应该将该数组移动到开始我已经制作了一个JSFiddle&以下代码为例:

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();

JSFiddle Example

我知道它为什么不起作用,但我已经尝试了大部分内容来移动它找到的数组。

任何想法?

2 个答案:

答案 0 :(得分:1)

background-image: url("../images/image_name.jpg"); background-size: cover; unshift

一起使用
splice

答案 1 :(得分:1)

此提议使用查找函数并返回拼接和取消的索引。



var data = [['487', 'RINGING'], ['477', 'RINGING'], ['488', 'RINGING']],
    index = function (array, search) {
        var index = -1;
        array.some(function (a, i) {
            if (a.every(function (b, j) { return b === search[j]; })) {
                index = i;
                return true;
            }
        });
        return index;
    }(data, ['477', 'RINGING']);

~index && data.unshift(data.splice(index, 1)[0]);
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
&#13;
&#13;
&#13;