一、對原數組造成影響的api
1.push() 在最后添加
eg: 原數組: var arr = [5, 20, 6, 5, 80, 4]
使用push()之后: arr.push(123); 變為: [5, 20, 6, 5, 80, 4,123]
2.pop() 取出最后一個
eg: 原數組: var arr = [5, 20, 6, 5, 80, 4]
使用pop()之后: arr.pop(); 變為: [5, 20, 6, 5, 80]
3.unshift() 在前面添加
eg: 原數組: var arr = [5, 20, 6, 5, 80, 4]
使用unshift()之后: arr.unshift(123); 變為: [123,5, 20, 6, 5, 80,4]
4.shift() 取出第一個
eg: 原數組: var arr = [5, 20, 6, 5, 80, 4]
使用shift()之后: arr.shift(); 變為: [20, 6, 5, 80,4]
5.sort() 方法,對數組排序
參數為一個回調函數!!!
如果沒有參數:則是按照第一位的ascII碼排序
eg: 原數組: var arr = [5, 20, 6, 5, 80, 4]
使用sort():
eg: var arrl = [1,2,3,4];
eg: var arrl = [1,2,3,4];
arr.sort(function (val1, val2) {
// return val1-val2; //val1-val2< 0 ,從小到大排列
return val2 - val1; //val1-val2> 0 ,從大到小排列
});
二、不對元素組進行操作
1.concat 數組的拼接 不會對原數組造成影響
eg: var arrl = [1,2,3,4];
var arr2 = [11,12,13,14];
var newArr = arrl.concat(arr2);
console.log(newArr);
運行結果:[1, 2, 3, 4, 11, 12, 13, 14]
2.join("") 將數組分割成字符串,按照所填的字符 不會對原數組造成影響
eg: var arrl = [1,2,3,4];
var arr2=arrl.join("-");
console.log(arr2);
運行結果:1-2-3-4
3.toString 將數組轉化為字符串,將數組元素用逗號隔開 不改變原數組
var arr2= arrl.toString();
console.log(arr2);
運行結果:1,2,3,4
4.slice(start,end) 按照下標 數組的截取 不包括end 不會對原數組造成影響
console.log(arrl.slice(0,3));
運行結果:[1, 2, 3]
5.splice(start,deleteCount,arr) 從start開始,刪除幾個 arr新插入的數組元素 操作的是原數組
eg: var arrl = [1,2,3,4];
arrl.splice(1,2,78)
console.log(arrl);
運行結果:[1, 78, 4]
三、實例
1. 編寫函數norepeat(arr) 將數組的重復元素去掉
var arr = [1, 2, 3, 5, 6, 7, 8, 9, 41, 2, 5, 2, 3, 65, 5, 2, 2, 1, 5, 5, 5, 25, 9, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 6, 5, 2, 5, 5, 5, 4, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
function norepeat(arr) {
while (true) {
var flag = true;
for (i = 0; i < arr.length; i++) {
for (j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
flag = false;
}
}
}
if (flag == true) {
return arr;
}
}
}
console.log(norepeat(arr));
2. 快速排序
var arr = [5, 2, 8, 4, 3, 6, 1, 7];
function quickSort(arr) {
//遞歸結束條件
if (arr.length <= 1) {
return arr;
}
//取中間的值以及中間的下標
var midIndex = parseInt(arr.length / 2), //為什么后面是分號,會阻隔數組的定義,而不阻隔 midValue 變量的定義
midValue = arr[midIndex],
leftArr = [],
rightArr = [];
// 遍歷arr數組,每一個值和中間的值相比較,大的放右側數組,小的放左側數組
for (var i = 0; i < arr.length; i++) {
//如果是中間小標的,跳出本次循環()不用中間值和自身比較
if (i == midIndex) continue;
if (arr[i] <= midValue) {
leftArr.push(arr[i]);
} else {
rightArr.push(arr[i]);
}
}
//利用遞歸處理左右數組
return quickSort(leftArr).concat(midValue).concat(quickSort(rightArr));
}
console.log(quickSort(arr));