JS配列内のある要素の位置を変える関数
2576 ワード
2011,1101更新:atrlさんは1行のコードの実現を提供して、とてもきれいです:
———————–
再構築JSが少なくなり、jQueryはよく知らないので、プリセットがあるかどうか分からないので、自分で先に書くしかありません.
[].splice.apply(arr, [].concat.apply([ toPos ,0], arr.splice(pos,1) ) );
———————–
再構築JSが少なくなり、jQueryはよく知らないので、プリセットがあるかどうか分からないので、自分で先に書くしかありません.
function changeArrayItemPos(arr, pos, toPos){
//
toPos = Math.min(Math.max(0, toPos), arr.length - 1);
// ,
if(pos === toPos || pos < 0 || pos > arr.length - 1){
return [].concat(arr);
}
var _arr = [], after = pos > toPos;
for(var i = 0, len = arr.length; i < len ; i++){
// pass
if(i === pos){
continue;
}else{
if(i === toPos){
//
if(after){
_arr.push(arr[pos]);
_arr.push(arr[i]);
}else{
_arr.push(arr[i]);
_arr.push(arr[pos]);
}
}else{
_arr.push(arr[i]);
}
}
}
return _arr;
}