检测数组
传统全局环境检测instanceof
es5新增Array.isArray()
if(value instanceof array){
//判断是否是数组执行环境
}
if(Array.isArra(value)){
//判断是否是数组执行环境
}
转换方法
toString():数组转换成字符串的方法,以","分割每一个元素
valueOf():字符串转换为数组
join():参数是吧数组分割成字符串的标示符,默认为","
var arry =["张三","李四","王五"]
arry.toString() // 张三,李四,王五
arry.valueOf() // ["张三", "李四", "王五"]
arry.join("//") // 张三//李四//王五
增,删,查,改 (栈方法 队列方法 操作方法 重排序方法 查询位置方法)
栈方法: (遵循 last in Frist Out)
1.push添加元素到数组,返回值是新数组的长度
2.pop删除数组的最后一个元素,返回值是被删除的元素
队列方法:(遵循 frist in frist out)
1.unshift():添加元素到数组的最前面,返回新数组的长度
2.shift():删除数组的最前面一个元素,返回删除的数组
操作方法:
1.concat():拼接数组,参数可以任意类型,返回拼接后新的数组,原数组不变
2.slice();数组的截取,参数1开始位置,参数2结束位置
3.splice();共三个参数
.两个参数 删除 第一个参数是开始位置,第二个参数是 删除个数
.三个参数 第二参数为0 起插入作用, 第一个是插入的起始位置,第三参数插入的项
.三个参数 第二个参数大于0 起替换作用 ,第一个参数起始值,第二替换多少个,第三替换内容
重排序方法:
reverser();反转数组
sort():数组排序,默认升序
注意点:
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
<script type="text/javascript">
function sortNumber(a,b)
{
return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
查询位置:
indexOf():从数组的开头位置查询,共计两个参数开始位置 ,查询位置
lastIndexOf():刚好是从反向查询
注意点:
查询的值是必须 === 意思就是值相等,类型也必须相等
迭代方法 (遍历数组的所有方法)
map():返回一个新的Array,每个元素为调用func的结果(并没有改变原数组)
var numbers = [65, 44, 12, 4];
function multiplyArrayElement(num) {
return num * 10;
}
function myFunction() {
console.log(numbers.map(multiplyArrayElement));//[650,440,120,40]
}
filter():返回一个符合func条件的元素数组(并没有改变原数组)
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.filter(checkAdult));//[32,33,40]
}
some():返回一个boolean,判断是否有元素是否符合func条件(有一个就行)(并没有改变原数组)
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 40;
}
function myFunction() {
console.log(ages.some(checkAdult));//false
}
function checkAdult2(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.some(checkAdult2));//true
}
every():返回一个boolean,判断每个元素是否符合func条件(所有都判断)(并没有改变原数组)
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.every(checkAdult))//false
}
forEach():没有返回值,只是针对每个元素调用func
var array1 = ['a', 'b', 'c'];
array1.forEach(function(element) {
console.log(element);
});
// expected output: "a"
// expected output: "b"
// expected output: "c"
var workdata=[
{id:'1',name:"IS"},
{id:'2',name:"IS-leader"},
{id:'3',name:"数据管理员"},
{id:'4',name:"管理员"}
]
workdata.forEach(item=>{
console.log(item.id+" : "+item.name)
})
// 1 : IS
// 2 : IS-leader
// 3 : 数据管理员
reduce()
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
var numbers = [65, 44, 12, 4];
function getSum(total, num) {
return total + num;
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduce(getSum);
}