数组
1.数组新增方法
会改变原来数组的
pop()— 删除数组的最后一个元素并返回删除的元素。
push()— 向数组的末尾添加一个或多个元素,并返回新的元素。
shift()— 删除并返回数组的第一个元素。
unshift()— 向数组的开头添加一个或更多元素,并返回新的长度。
reverse()— 反转数组的元素顺序。
sort()—对数组的元素进行排序。
splice()—用于插入、删除或替换数组的元素。
不会改变原来数组的:
concat()—链接两个或更多的数组、并返回结果。
every()—检测数组元素的每一个元素是否都符合条件。
some()— 检测数组元素中是否有元素符合指定条件。
filter()— 检测数组元素,并返回指定条件所有元素的数组。
indexOf()— 搜索数组中的元素,并返回它所在的位置。
join()— 把数组的所有元素放入一个字符串。
toString()— 表示数组转换为字符串,并返回结果。
lastinddexOf()— 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
map()— 通过指定函数处理数组的每个元素,并返回处理后的数组。
slice()— 选取数组的一部分,并返回一个新数组。,
valueOf()— 返回数组对象的原始值。
concat()— 链接两个或更多的数组,并返回结果。
var arr1 = [12,23,1,34]
var arr2 = [23,45]
console.log(arr1.concat(arr2))
condole.log(arr1)
console.log(arr2)
callback是一个函数
function fn(callback) {
callback()
(function(){console.log('我是一个回调函数');})()
}
fn (function(){
console.log('我是一个回调函数');})
every()— 检测数组的元素的每一个元素是否都符合条件。返回一个布尔值 &&
var arr = [98,88,80,78,67,67,76];
var flag =
arr.every(function(element,index,array){
return element>=50;})
some()— 检测数组元素中是否有元素符合指定条件。它返回的是一个Boolean类型的值。
var arr = [98,88,80,78,67,67,76];
var flog =
arr.some(function(element,index,array){
return element>=100;})
console.log(flag);
filter()— 检测数组元素,并返回符合条件所有元素的数组(新数组)
var arr = [98,88,80,78,67,67,76];
var newarr = arr.filter(function(element,index){
return element>=70})
console.log(newarr);
forEach(): 就像for循环
var arr = [98,88,80,78,67,67,76];
arr.forEach(function(element,index){
console.log(element,index);
})
map()遍历元素,但返回值(每个元素进行处理)
var arr = [98,88,80,78,67,67,76];
var newarr = arr.map(function(ele,i){
return ele%10
})
console.log(newarr);
2.数组冒泡排序
冒泡排序的原理:两个相邻元素,进行比较,大的往后排
// 外层循环代表走了几轮,每走一轮就能比较出一个最大值
for (var j = 0; j<arr.length-1; j++){
// 内层循环代表每一轮进行了多少次的比较
for (var i = 0; i < arr.length-1-j ;i++){
// 两个相邻的元素进行比较,如果发现前面元素比后面元素大,就将前面元素往后排(交换)
if(arr[i]>arr[i+1]){
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
3.值类型和引用类型
基本数据类型:值类型
存的就是值
var a = 10; // var a在内存中开辟空间,存入10。空间的名称叫a
复杂数据类型:引用数据类型
存储的是地址值
var arr = [12,34,56,67]; // arr存储的是一个地址
var arr1 = arr; // 将arr的地址复制给arr1
4.严格模式
严格模式:‘use strict’
- 声明变量必须有var关键字
‘use strict’
var a = 90;
b = 30;
console.log(window);
// window对象保存着全局作用域下面属性和方法
2.函数的形参不可以重复
'use strict'
function fn(y,y){
console.log(y);
console.log(y);
}
fn(2,3)
3.声明函数调用时,内部没有this
'use strict'
function fn(){
console.log(this); // 函数里面的this指向的是window
// console.log(arguments);
}
fn()
5.字符串
Array
String: 对象
属性:length
方法:1. concat():方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
var str1 = 'abc';
var str2 = 'efd';
console.log(str1.concat(str2));
console.log(str1 + str2);
2.charAt() 方法从一个字符串中返回指定的字符。
// 随机生成一个四位数验证码
var str = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
console.log('一共有:' + str.length + '个元素');
// 1. 随机生一个任意元素的下标(0 - str.length-1)
// 随机数:parseInt(Math.random()*(最大值-最小值+1)+最小值)
var sjIndex = parseInt(Math.random()*(str.length-1-0+1)+0)
var sjIndex = parseInt(Math.random() * str.length)
console.log(sjIndex); //随机下标
// 2. 获取随机下标下对应的元素
console.log(str.charAt(sjIndex));//随机下标对应的元素
// 封装了一个返回任意字符串任意长度的验证码
function getVeriCode(str,n) {
var newstr = ''
for (var i = 1; i <= n; i++) {
// 生成str中任意一个元素
var sjIndex = parseInt(Math.random() * str.length)
// newStr用于拼接每一个,循环几次,拼接几个
newstr += str.charAt(sjIndex) }
return newstr;
}
3.split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
6.字符串转为数组
split(参数):将字符串分割成子字符串字符,按照参数来进行分割,如果没有参数,会分割成一个一个的字符。