Harmony鸿蒙开发0基础入门到精通Day02--JavaScript篇
【继续上个章的内容,让我们继续学习JavaScript。】
JavaScript基础
函数(续)
函数的作用域
变量作用域:全局和局部。
函数中的变量只作用于函数当中。
var n = 200//全局变量
function ff(){
var a = 100;//局部变量
console.log(n)//200
}
console.log(a) //报错!!!
函数的封装
简单来说就是把重复的代码封装到一个函数当中,在使用的时候,直接调用即可
我们做一个判断水仙花数的例子,输出所有的水仙花数。
//判断一个数是不是水仙花数
function fn(n) {if(n<100||n>999) return falselet s = String(n)let sum = 0for (let i = 0; i < s.length; i++) {sum += Math.pow(s.charAt(i), 3)}if (sum == n) {return true}return false
}//输出水仙花数
for(let i=100;i<1000;i++)if(fn(i)) console.log(i);
对象的使用
声明方式1:let obj = {属性名:属性值,...}
声明方式2:let obj = new Object({属性名:属性值,....})
delete 对象名.属性名:删除属性
对象名.新属性名=值-------->会自动添加一个属性名:值
for...in循环
// k---->属性 通过obj.k(或者obj[k])能够拿到所有的属性值
//建议还是使用obj[k],要想拿键值对使用这种形式+for……in会更好
for(var k in obj){
}
数组
创建:let arr = [1,2,3,true,{},funcation f(){}]--->数组中的元素可是不一样
或者 let arr = new Array(数字)---->此时是数字代表的含义,是数组的初始长度,当长度超出的时候,长度会增加
当然,还会有二维数组,三维数组等等等等,这些我就不在这里展开。
数组的方法
push(值) :往末尾追加一个元素
pop():往末尾弹出(删除)一个元素
unshift(值):在第一项前面插入一个元素
shift():在第一项弹出(删除)一个元素
let arr = [1,2,3,4,5,6]arr.push(7)
console.log(arr);//[1,2,3,4,5,6,7]---->新增了末尾7arr.pop()
console.log(arr);//删除了末尾7arr.unshift(0)
console.log(arr);//在开头新增了0arr.shift()
console.log(arr);//删除了开头第一个元素
slice(开始索引,结束索引):截取数组(包头不包尾)
---------》如果slice只有一个值,那就是从此处截取到最后
splice(开始索引,删除个数,替换删除的位置(可选)):结果会影响原数组,内容也会发生改变,返回值是删除的内容
let a = [true,1,2,3,"str"]
let b = a.slice(1,3)//能够拿到[1,2] 包头不包尾,但并没有修改原数组的内容
console.log(b); //----->打印截取到的b数组//删除指定位置,第一个参数是删除下标,第二个则是删除个数,从当前开始往后数。
//修改了原来的数组 返回值是删除的元素
let c = a.splice(1,2)
console.log(c);//[1,2]
console.log(a);//[true,3,"str"]
concat():合并多个数组为一个
join():把数组中的每一项以字符串的方式进行分割,默认是逗号分隔符
sort():内置的排序方法,直接使用是从小到大,十以内,若想排序十以外,就需要传入一个参数,传参是一个function。【sort(function(a,b){return a-b})------->从小到大】【反之b-a从大到小】
reverse():反转数组中的内容
forEach():遍历数组中的元素
var a = [1,2,3,4,5]
a.forEach(o = > console.log(o))
map():返回结果是满足条件的布尔值
filter():返回满足条件的具体结果。
find():返回满足条件的第一个值
数组去重
经典简单方式:
let a = [1,2,3,4,5,1,2,3,4,5]
let b = a.filter((obj,index,arr) => arr.indexOf(obj) === index)
console.log(b);
//当使用过滤器的时候,将当前下标与查找的第一次出现下标进行比较,可以实现去重
要是难以理解没有关系
这里也有可以理解的办法
let a = [1,2,3,4,5,1,2,3,4,5]
let b = []
a.forEach(o=>{if(!b.includes(o)) b.push(o)})
console.log(b);
定义一个数组,将元素加入新的数组当中,要是新数组中没有就添加,否则就不添加。
排序方式
冒泡排序
思想:每一次循环找出一个最大值推到最末端,也就是每次循环找一个最大值。
for (let i = 0; i < a.length; i++) {for (let j = 0; j < a.length - i - 1; j++) {if (a[j] > a[j + 1]) {let temp = a[j];a[j] = a[j + 1];a[j + 1] = temp}}
}
选择排序
思想:每次循环找出一个最小下标,并于第一个进行交换,重复循环寻找即可
//选择排序
for (let i = 0; i < a.length; i++) {let minIndex = i; for (let j = i + 1; j < a.length; j++) {if (a[minIndex]>a[j]) {minIndex = j;}}let temp = a[i];a[i] = a[minIndex];a[minIndex] = temp}
插入排序
思想:因为我们不知道一开始哪一部分是有序的,所以假定第一个元素是有序的,接着从下一个元素开始,每次抽取出一个元素,然后根据大小往有序的数组中插入,就像是扑克牌排顺序一样。
//插入排序
for(let i=1;i<a.length;i++){//插入排序从第一个开始if(a[i]<a[i-1]){let value = a[i];let j;for(j = i-1;j>=0&&a[j]>value;j--){a[j+1] = a[j]}a[j+1] = value}
}