- 数组扁平化
var arr = [[1, 3, 2, 1],[5, 3, 4, 8, 5, 6, 5],[6, 2, 8, 9, [4, 11, 15, 8, 9, 12, [12, 13, [10], 14]]], 16]
1、扁平化方法一(toString)
注意:如果arr数组中有空数组,不使用此方法,用下面的方法;同时得到数组的值是字符串,不是数字。
var newArr = arr.toString() // "1,3,2,1,5,3,4,8,5,6,5,6,2,8,9,4,11,15,8,9,12,12,13,10,14,16"
var newArr = arr.toString().split(',') // ["1", "3", "2", "1", "5", "3", "4", "8", "5", "6", "5", "6", "2", "8", "9", "4", "11", "15", "8", "9", "12", "12", "13", "10", "14", "16"]
2、扁平化方法二(正则表达式)
var newArr = JSON.stringify(arr1) // [[1,3,2,1],[5,3,4,8,5,6,5],[6,2,8,9,[4,11,15,8,9,12,[12,13,[10],14]]],16]
var newArr = JSON.stringify(arr1).replace(/\[|\]/g, '').split(',') // ["1", "3", "2", "1", "5", "3", "4", "8", "5", "6", "5", "6", "2", "8", "9", "4", "11", "15", "8", "9", "12", "12", "13", "10", "14", "16"]
3、扁平化方法三(遍历数组)
var newArr3 = []
function flat(arr) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] instanceof Array) {
flat(arr[i])
} else {
newArr3.push(arr[i])
}
}
}
flat(arr)
- 数组去重
1、利用for嵌套for,然后splice去重(ES5中最常用)
// 删除1
var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unlink(arr) {
for (var i = 0; i < arr.length-; i++) { // 首次遍历数组
for (var j = i + 1; j < arr.length; j++) { // 再次遍历数组
if (arr[i] == arr[j]) { // 判断连个值是否相等
arr.splice(j, 1); // 相等删除后者
j--;
}
}
}
return arr
}
console.log(unlink(arr));
// 删除2
var arr = [1,2,3,4,4,4,4,3,3,3,2,2,2];
for (var i = 0; i < arr.length-1; i++ ) {
for(var j = i+1; j < arr.length; j++){
if(arr[i]==arr[j]){
delete arr[j];
}
}
}
for(var i=arr.length-1;i>=0;i--){
if(arr[i]==null){
arr.splice(i,1);
}
}
// console.log(arr)
// 添加1
var arr=[1,2,3,2,1,1,1,1,1,3];
var res=[];
for(var i=0;i
2、利用indexOf去重
var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unlink(arr) {
if (!Array.isArray(arr)) {
console.log('错误!')
return
}
var array = [];
for (var i = 0; i < arr.length; i++) { // 首次遍历数组
if (array.indexOf(arr[i]) === -1) { // 判断索引有没有等于
array.push(arr[i])
}
}
return array
}
console.log(unlink(arr));
3、利用includes
var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unique(arr) {
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
var array =[];
for(var i = 0; i < arr.length; i++) {
if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
array.push(arr[i]);
}
}
return array
}
console.log(unique(arr))
4、利用filter
var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unlink(arr) {
return arr.filter(function (item, index, arr) {
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return arr.indexOf(item, 0) === index;
});
}
console.log(unlink(arr));
- 数组排序
var duplicate=[1, 3, 2, 5, 4, 8, 6, 9, 11, 15, 12, 13, 10, 14, 16]
1、 排序方法一:(sort方法)
function systemSort(arr) {
return arr.sort(function(a, b) {
return a - b
})
}
var sort = systemSort(duplicate)
2、排序方法二:(冒泡排序)
function bubbleSort(arr) {
var len=arr.length
for(var i = len-1; i > 0; i--) {
for(var j = 0; j < i; j++) {
if(arr[j] > arr[j+1]) {
var tmp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1]= tmp
}
}
}
return arr
}
var sort1 = bubbleSort(duplicate)
参考文件:https://blog.csdn.net/qq_42957741/article/details/103859601
参考文件:https://blog.csdn.net/qq_27626333/article/details/77966760