前言
笔记包含JSON对象,字符串定义应用,ascll码表应用,以及新增API函数等
目录
一、选择排序
var arr=[12,3,4,2,];
//核心:外层N-1;
//内层N-i-1;
思路:i控制指定位置
k控制目标位置
k=i;用k来查找目标位置
最后交换arr【k】和arr【i】
var t,k;
for(var i=0;i<arr.lenght-1;i++){//趟次
k=i;
for(var j=i+1;j<arr.length;j++){//次数,j的长度本来是arr.length-i-1,但是由于j是从i+1开始的,所以j的长度也要+i+1,相互抵消就为arr.length。
if(arr[k]>arr[j]){ // 选择排序不是每次都进行交换,一趟只交换一次;
k=j;
}
}
//经过内层循环,k得到的是最小元素对应的下标
t=arr[i];
arr[i]=arr[k];
arr[k]=t;
}
console.log(arr)
}
二、JSON对象
1.json定义:
一种容器:数据格式,将多个繁琐的属性或方法封装成一个整体
定义:由若干个键值对构成的,一组以上的键值对用逗号隔开
var stu={
key1:valie1,
key2:value2....
}
注意事项:key全部用引号引起来
2.json对象属性的使用
方法一:对象名.属性名
console.log(stu.name,stu.age)
方法二:下标法
对象名[“索引”]
console.log(stu["name"],stu["age"])
3.for...in遍历索引
for(var 索引变量名 in 容器(json或数组)){
//循环体
}
for(var index in stu){
//for...in中不能用打点的方法
console.log(stu[index]);
}
4.添加自定义属性
对象名.新的属性名=数值;
5.添加方法的Json对象
var stu={
"eat":function(){
console.log("eat");
}
"showValue":function(){
//如果json对象的函数中需要使用其他属性或者函数
//需要加前缀this
//this代表调用该函数的对象本身
console.log(this.name)
this.eat();
}
};
stu.showValue();
三、严格模式
“use strict”
严格模式:无法使用未被声明(定义)的变量,但是不限制声明顺序;
四、indexOf(数组ES5新增方法)
indexOf
功能:查找目标元素,找到返回下标,找不到返回-1,
参数:indexOf(目标元素)
返回值:找到返回下标,找不到返回-1
数组去重
var arr=[2,3,4,5,6,7,1,1,2,2,,3,3];
var arr1=[];
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i])==-1){
arr1.push(arr[i]);
}
}
console.log(arr1);
五、回调函数
回调函数:一个被当做参数的函数
解决问题:将自定义模块传入至第三方模块
function f1(f){//第三方代码,闭源代码
//f==f2
//f()==f2()
f();//这一步是第三方调用的,和自定义设计模块无关
}
var f2=function(){//自定义模块
console.log("f2");
}
f1(f2);
六、迭代函数
forEach
功能:对数组的所有元素执行某种相同的操作,
参数:forEach(回调函数);
回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])
返回值:无
var arr=[1,2,3];
function fun(x,index,a){
a[index]+=10;
}
arr.forEach(fun);
console.log(arr);
map:
功能:和forEach基本一模一样,多了一个返回值
参数:map(回调函数);
回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])
返回值:用回调函数return的数据,构成一个数组
var arr = [1,2,3];
function fun(x,index,a){
a[index] += 10;
return a[index];
}
var arr1 = arr.map(fun);
console.log(arr1);
filter:
功能:按条件过滤元素
参数:filter(回调函数);
回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])
返回值:根据当前回调函数return的布尔值,决定是否返回当前元素本身
var arr = [6,5,7,4,8,3];
function fun(x){
if(x%2==1){
return true;
}else{
return false;
}
}
var arr1=arr.filter(fun);
console.log(arr1);
//注:相当于遍历一个数组,对数组内的元素进行函数内的操作,相当于循环函数,每个数组元素调用一次函数至数组结束。
七、字符串的定义和创建
字面量
var str='heihei';//内置基本类型
构造方法
var str1 = new String("heihei");//引用类型
//习惯用字面量方式定义字符串
八、ASCll码表
重点记以下:
97 a
65 A
48 0
32 空格
13 回车
//asc码与字符是完全等价的
九、API函数
charAt
功能:查询索引对应的字符,返回字符
参数:charAt(索引)
返回值:返回索引对应的字符
charCodeAt:
功能:查询索引对应的字符,返回字符所对应的asc码值
参数:charCodeAt(索引)
返回值:返回索引对应的字符的asc码值
输入字符串,统计有多少大写字母,小写字母,数字,空格
getExam()
var str = "12a45b cA AB+#$%^";
var bigChar = 0;
var smallChar = 0;
var num = 0;
var space = 0;
var other = 0;
for(var i=0; i<str.length; i++){
if(str.charAt(i) >= '0' && str.charAt(i) <= '9'){
num++;
}else if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z'){
smallChar++;
}else if(str.charAt(i) >= 'A' && str.charAt(i) <= 'Z'){
bigChar++;
}else if(str.charAt(i) == " "){
space++;
}else{
other++;
}
}
console.log(num,smallChar,bigChar,space,other);
fromCharCode(asc1,【asc2...】):
功能:将asc码值转换为字符,返回被转换的字符
注意:通过String类型名来调用
console.log(String.fromCharCode(97,98));
indexOf(“abc”)
功能:查找字符串第一次出现的位置,返回子串首字母的下标
lastIndexOf(“abc”)
功能:查找字符串最后一次出现的位置,如果没找到返回-1
replace:
功能:用参数2,替换参数1;
参数:replace(参数1,参数2)
返回值:被替换的字符串
slice/substring:
slice(起始位置,结束为止) 左闭右开
substring(起始位置,结束位置);右闭左开
两者区别:slice支持负数:console.log(str.slice(-5,-2));//左开右闭
split
功能:字符串分隔符,将字符串转为数组,
参数:split(“分割字符串”)
返回值:新的数组
toLowerCase、toUpperCase
转小写、转大写
总结
重点背诵新增函数,以及熟悉函数用法。对于回调函数,个人认为将它看成数组遍历,函数不过是一个功能,可以对数组中的每一个元素进行功能性改变。