查找数组并将其移动到多重数组的开头
Find array and move it to the beginning of a Multidimesional array
我一直在尝试开发一种将数组移动到数组开头的方法。
我的问题是我按照上一个问题中的建议使用:
channelArrStatus.unshift(channelArrStatus.pop());
问题是它只会删除最后一个值并将其粘贴在开头。
但是,如果每次我需要它来定位时值都不同,如果满足条件,则将满足条件的数组移动到数组的开头。
我需要发生什么
查找之前 - [ '477', '振铃' ] :
[ [ '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 示例
我知道为什么它不起作用,但我几乎尝试了一切来将它找到的数组移动到开头。
有什么想法吗?
将unshift
与splice
一起使用:
var input = ['aa', 'bb', 'cc', 'dd'],
index = input.indexOf('cc');
Array.prototype.unshift.apply(input, input.splice(index, 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>');
相关文章:
- 将组成单词的字符添加到数组的开头
- Javascript 不读取以 0 开头的数组项
- 在数组中查找颜色值(以#开头的字符串)
- 使用jQuery'在数组中循环;s中的每一个都会在生成字符串时在开头产生一个未定义的值
- Jquery 字符串替换,只替换数组的开头
- 查找数组并将其移动到多重数组的开头
- 在数组中向前和向后选择 X 个金额,如果需要,循环到开头和结尾
- JavaScript中的正则表达式获取以特定字符串开头的数组的所有字段
- 在 1 个不限于文本开头的属性上筛选对象数组
- 删除数组中以特定字符串开头的所有项
- 用Javascript对一个以特定字符串开头的数组进行排序
- 2d数组仅在以[0][x]开头时有效
- 如何将null值推送到数组的开头
- 如何计算数组中以最高数字开头的项目数
- 函数将项添加到数组的开头,而不使用unshift方法
- 如何删除数组中以0开头的项
- 如果数组元素以特定字母开头,则执行某些操作
- 当另一个元素以相同字母开头时,从字符串数组中删除一个元素
- 将元素添加到数组的末尾,从开头删除元素以保持数组的大小
- 如何搜索Javascript数组,并返回数组中以X开头的所有字符串