js 数组处理函数

本文转载自有有《js 数组处理函数》

concat

将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响。

var arr = ["a","b","c"];
var arr1 = arr.concat("d","e");
//arr1 = ["a","b","c","d","e"]

join

以指定的字符作为分割符,将数组转换为字符串,当指定字符为逗号时,其作用和 toString() 相同。

var str1 = arr.join(",");
//str1 = "a,b,c"

pop

通俗的讲,就是弹出数组的最后一个元素。结合下面的 push 方法,使得将数组作为栈来使用成为可能。pop 方法返回数组最后一个元素的值,并将 length 属性减 1,即返回后立即丢失最后一个元素。

var item1 = arr.pop();
//item1 = "c"

push

将参数添加到数组的结尾。

arr.push("d","e");
alert(arr);
//arr = ["a","b","c","d","e"]

reverse

将数组中的元素反转排列,这个操作是在原有数组上经行操作,同时也返回数组本身。

arr.reverse();
alert(arr);
//arr = ["c"."b","a"]

shift

移去数组的第一个元素,并返回这个元素的值。这个方法的性质和 pop 方法很类似,pop 方法是移去最后一个元素。

var item1 = arr.shift();
//item1 = "a"

unshift

将参数列表插入到数组的开头。其性质和 push 方法类型,但 push 方法是将元素添加到数组的结尾。

arr.unshift("d","e");
alert(arr);
//arr = ["d","e","a","b","c"]

slice

返回数组对象的一个子集,索引从开始(包括开始位置元素),到结束(不包括结束位置元素),原有数组不受影响。当 开始或者结束为负数时,则使用他们加上数组长度后的值。如果结束小于等于开始,将返回空数组。

var item1 = arr.slice(1,2);
//item1 = "b"
var item2 = arr.slice(-2,-1);
//item2 = "b"

splice

从数组对象中移除指定长度的元素,并替换为新的元素(相当于执行替换操作)。如果没有指定新的元素,则相当于执行删除操作。返回被删除元素组成的数组。

var arr1 = arr.splice(1,2,"d","e");
//arr1 = ["b","c"]
alert(arr);//["a","d","e"]
var arr2 = arr.splice(1,2);
//arr2 = ["d","e"]
alert(arr);
//arr = ["a"]

 

数组打乱顺序

array.sort(() => Math.random() - 0.5); //数组打乱顺序

 

 

数组交换位置

export const arrayMove = function(arr, oldIndex, newIndex) {
  const newArry = [...arr];
  const typename = Object.prototype.toString
    .call(arr)
    .slice(8, -1)
    .toLowerCase();
  if (typename !== 'array') {
    return [];
  }
  newArry.splice(newIndex, 1, ...newArry.splice(oldIndex, 1, newArry[newIndex]));
  return newArry;
};

 

数组移动

/**
 * 数组移动
 * @param {*} arr  传过来的数组
 * @param {*} oldIndex 移动前的位置
 * @param {*} newIndex  移动后位置
 * @returns
 */
export const arrayMove = function(arr, oldIndex, newIndex) {
  if (!isArray(arr)) {
    return [];
  }
  const newArry = [...arr];
  const temp = newArry.filter((_, index) => index !== oldIndex);
  temp.splice(newIndex, 0, arr[oldIndex]);
  return temp;
};

 

posted @ 2014-07-10 09:49  webnote  阅读(285)  评论(0编辑  收藏  举报