js中常见的数据类型
// 基础类型:
String // 字符串
Number // 数字
Boolean // 布尔值
Null // 空对象
Undefined // 末定义
Symbol //new in ES 6
// 引用类型:
Object // 对象
Array // 数组
Function // 函数
基本类型保存的是值,引用类型保存的是对象的地址,所有基本类型赋值是按值传递(拷贝赋值),
引用类型赋值是按引用传递。
运算符 判断数据类型的方法
// typeof 返回变量或表达式的类型 注意此方法只能判断简单的数据类型
console.log(typeof '123') // string
console.log(typeof 123) // number
console.log(typeof true) // boolean
console.log(typeof null) // object
console.log(typeof undefined) // undefined
console.log(typeof {}) // object
console.log(typeof []) // object
console.log(typeof Function) // function
// instanceof 除了能判断简单的数据类型外, 还可以用来判断一个对象是否另一个对象的实例
[] instanceof Array; // true
{} instanceof Object;// true
new Date() instanceof Date;// true
function Person(){};
new Person() instanceof Person;
[] instanceof Object; // true
new Date() instanceof Object;// true
new Person instanceof Object;// true
// 从 instanceof 能够判断出 [ ].__proto__ 指向 Array.prototype,而 Array.prototype.__proto__ 又指向了Object.prototype,最终
// Object.prototype.__proto__ 指向了null,标志着原型链的结束。因此,[]、Array、Object 就在内部形成了一条原型链:
常用的数组方法
// 增加元素
// array.push() 向数组的末尾添加一个或多个元素,并返回新的长度
// array.unshift() 向数组的开头添加一个或多个元素,并返回新的长度
const arr = [1, 2, 3, 4, 5]
console.log(arr.push(6, 7)) // 7
console.log(arr) // [1, 2, 3, 4, 5, 6, 7]
const arr = [1, 2, 3, 4, 5]
console.log(arr.unshift(6, 7)) // 7
console.log(arr) // [6, 7, 1, 2, 3, 4, 5]
// 删除元素
// array.pop() 删除并返回数组的最后一个元素
// array.shift() 删除并返回数组的第一个元素
const arr = [1, 2, 3, 4, 5]
console.log(arr.pop()) // 5
console.log(arr) // [ 1, 2, 3, 4]
const arr = [1, 2, 3, 4, 5]
console.log(arr.shift()) // 1
console.log(arr) // [ 2, 3, 4, 5]
// 删除元素并向数组添加新元素
// array.splice(index, n) 从数组的index位置开始删除n个元素, 并返回被删除的元素的数组
// array.splice(index, n, newarray) 从数组的index位置开始删除n个元素然后再增加新的元素, 并返回新的数组
const arr = [1, 2, 3, 4, 5]
console.log(arr.splice(1, 1)) // [2]
console.log(arr) // [1, 3, 4, 5]
const arr = [1, 2, 3, 4, 5]
console.log(arr.splice(1, 2, 6)) // [2, 3]
console.log(arr) // [1, 6, 4, 5]
// 截取与合并
// array.slice(start,end) 从已有的数组中返回选中的元素, 包左不包右
// array.concat(element1,element2,array) 连接两个或多个数组,并返回新的数组
// 注:该方法并不会改变现有的数组,而仅仅会返回被连接数组的一个副本
const arr = [1, 2, 3, 4, 5]
console.log(arr.slice(1, 3)) // [2, 3]
console.log(arr) // [1, 2, 3, 4, 5]
const arr = [1, 2, 3, 4, 5]
console.log(arr.concat(6, 7, [8, 9])) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr) // [1, 2, 3, 4, 5]
// array.join(separator) 把数组中的所有元素放入一个字符串, 元素通过指定的分隔符进行分隔(默认是逗号分隔符),返回一个字符串
// string.split(separator,n) 把一个字符串分割成字符串数组, n代表指定返回的数组的最大长度
const arr = [1, 2, 3, 4, 5]
console.log(arr.join()) // string 1,2,3,4,5
console.log(arr) // [1, 2, 3, 4, 5]
const str = '1234564897'
console.log(str.split('',5)) // ["1", "2", "3", "4", "5"]
console.log(str) // 1234564897
// array.reverse() 颠倒数组中元素的顺序
// array.sort() 对数组中的元素进行排序, 注意:数组在原数组进行排序,不生成副本
const arr = [1, 2, 3, 4, 5]
console.log(arr.reverse()) // [5, 4, 3, 2, 1]
console.log(arr) // [5, 4, 3, 2, 1]
const arr = [1, 9, 3, 8, 5]
console.log(arr.sort()) // [1, 3, 5, 8, 9]
console.log(arr) // [1, 3, 5, 8, 9]
是否改变原数组整理
改变原数组的:
shift:将第一个元素删除并且返回删除元素,空即为undefined
unshift:向数组开头添加元素,并返回新的长度
pop:删除最后一个并返回删除的元素
push:向数组末尾添加元素,并返回新的长度
reverse:颠倒数组顺序
sort:对数组排序
splice:splice(start,length,item)删,增,替换数组元素,返回被删除数组,无删除则不返回
不改变原数组的:
concat:连接多个数组,返回新的数组
join:将数组中所有元素以参数作为分隔符放入一个字符
slice:slice(start,end),返回选定元素
map,filter,forEach,some,every等不改变原数组