// sort
// 默认按asc码从小到大排列,可以往sort()里传函数
// 要求:1.必须写两个形参
// 2.看返回值 1) 当返回值为负数,那么前面的数放在前面 2) 返回值为正数,后面的数放在前面
// 3)为0 不动
// 比较顺序遵循冒泡排序
var arr = [2,20,10,13,48,14,6];
arr.sort(function (a,b) {
// return a - b; 升序
// return b - a; 降序
return a - b;
})
// 给一个有序的数组,乱序
var arr = [1,2,3,4,5,6,7,8];
arr.sort(function () {
return Math.random() - 0.5
})
// slice 一个参数 从该位开始截取,直到最后
// 两个参数 从该位开始截取,截取到该位
// 不写 会整个截取 >> 可以把伪数组 转成真数组 空截
var arr = [1,2,3,4,5,6,7,8];
var newArr = arr.slice(1,3) // [2,3]
var newArr = arr.slice(1) // [2, 3, 4, 5, 6, 7, 8]
var newArr = arr.slice();
// join方法返回字符串
var str = arr.join("-")
// split返回数组
var sst = str.split("-")
// 原始值放到栈内存存储 字符串的连接是通过栈去连接
// 数组是散列结构 用来连接字符串效率更高
//数组去重
var arr = [1,2,3,3,"a",5,4,12,"a",5];
var s = [];
for (const key in arr) {
if (s.includes(arr[key]) == false) {
s.push(arr[key])
}
}
for (const key in arr) {
if (s.indexOf(arr[key]) == -1) {
s.push(arr[key])
}
}
console.log(s)
类数组
// 类数组属性要为索引(数字)属性,必须有length属性,最好加上push,加上splice会变成数组形式
// 好处 同时具有对象和数组的优点
var obj = {
"2" : 'a',
"3" : 'b',
"length" : 2,
"push" : Array.prototype.push,
"splice" : Array.prototype.splice
}
obj.push('c')
obj.push('d')
console.log(obj) //Object(4) [empty × 2, "c", "d", push: ƒ, splice: ƒ]
// push是往最后一位,length上推一个数
// push的原理
// Array.prototype.push = function (target) {
// obj[obj.length] = target;
// obj.length ++;
// }
数组filter()、forEach()、map()、some()、every(),reduce()、reduceRight()
重写typeof方法 去判断各种准确类型
// 重写type 工具方法
function type(target) {
// 分两类 原始值 引用值
// 区分引用值
var template = {
'[object Array]' : "array",
'[object Object]' : "Object",
'[object Number]' : "number - object",
'[object Boolean]' : "boolean - object",
'[object String]' : "String - object",
}
if (target == null) {
return 'null';
}
if(typeof(target) == 'object'){
// 数组 对象 包装类
var str = Object.prototype.toString.call(target);
return template[str]
}else{
return typeof target;
}
}
数组去重
// 数组去重
var arr = [1,2,1,1,null,undefined,1,2,1,undefined,null,3,1,2]
Array.prototype.unique = function () {
var temp = []
for (const key in this) {
if (this.hasOwnProperty(key)) {
if (temp.indexOf(this[key]) == -1) {
temp.push(this[key])
}
}
}
return temp;
}
var arr1 = arr.unique();
var arr1 = Array.from(new Set(arr));
console.log(arr1)