我有一个像这样的JavaScript:

var data = ["apple", "ball", "cat", "dog", "elephant", "fish", "gorilla"] 
var index = [2, 3] // cat and dog 
var to = 5 // fish 
 
var arrTemp = []; 
 
data.forEach(function(val,key){ 
 
  if(index.indexOf(key)!=-1){ 
 
    data.splice((to+1),0,data[key]); 
    to++; 
    delete data[key]; 
 
  } 
}) 
data = data.filter(function(val){ return val != undefined });  
 
console.log(data) 

这里index = [2, 3]data i的索引。 e. ball anddogto 是我想要放置 index 值的 target

我想把索引 i。 之后的球和狗

上面的代码给出了准确的结果,并得到了 SO 用户的帮助。

但是当我将索引值设置为 index = [4, 5]to = 2 时。它给了我错误。它不会将 elephantfish 放在 cat 之后。

我编写了另一个程序来处理这个问题,例如:

var data = ["apple", "ball", "cat", "dog", "elephant", "fish", "gorilla"] 
var index = [4, 5] // elephant and fish 
var to = 2 // cat 
var offset = 0 
 
data.forEach(function(val,key){ 
 
 
  if(index.indexOf(key)!=-1){ 
    data.splice((to+1), 0, data[key + offset]); 
    to++; 
    offset++; 
    var del_key = key + offset 
    delete data[del_key]; 
  } 
}); 
console.log(data) 

此代码给出了 index = [4, 6]index = [3, 6]to = 2 的结果,但不是对于像 index=[4, 5]to = 2

请您参考如下方法:

就算法而言,这不是一个优雅的解决方案,但它可以完成工作。如果您发现任何问题请告诉我

var data = ["apple", "ball", "cat", "dog", "elephant", "fish", "gorilla"] 
var index = [0, 4, 5]  
var to = 2;  
var i =0; 
var stringatTo = data[to]; 
var temp =[]; 
for (var k = 0; k < index.length; k++) { 
    temp[k] = data[index[k]]; 
} 
 
for (var k = 0; k < index.length; k++) { 
  data.splice(data.indexOf(temp[k]),1); 
} 
 
var curindex = data.indexOf(stringatTo); 
 
for (var j = 0; j < temp.length; j++) { 
data.splice(curindex+1+j,0,temp[j]); 
} 
 
console.log(data); 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!