JavaScript学习DAY5

DAY5

一、数组 是一个有序的数据集合

创建方式
1、字面量
var arr = [1,2,3,4,‘hello’,true] // 没有数据我们管它叫做 空数组
2、内置构造函数
var arr1 = new Array(5,6,7)
// 一个参数是数组的长度
// 二个及以上参数数组里面的数据

二、索引和length
索引就是 数组里面的 顺序
索引从 0 开始   数组里面获取最后一个元素:comsole.log(arr[arr.length-1]);
length 是数组的长度 (数组里面有多少个数据)
三、引用数据类型

​ 目前我们接触的引用数据类型 函数(function) 数组(array) 对象(object)
​ 引用数据类型 存的是地址
​ 基本数据类型 存的是值

四、操作数组的方法

1、push() 往数组里面追加一条数据
语法:数组.push(你要追加的数据)
返回值:改变后的数组的长度
直接改变原数组
var res = arr.push(123)

2、pop() 删除数组的最后一项
语法:数组.pop()
返回值:被删除的那一项数据
直接改变原数组
var res = arr.pop()

3、unshift() 往数组的最前面添加一条 数据
语法:数组.unshift(你要添加的数据)
返回值:改变后的数组的长度
直接改变原数组
var res = arr.unshift(123)

4、shift() 删除数组的第 0 项数据
语法:数组.shift()
返回值:被删除的那一项数据
直接改变原数组
var res = arr.shift()

5、indexOf() 查询数组里面有没有某一条数据
语法:数组.indexOf(你要查询的数据)
返回值:第一个对应字符的索引
没有这个数据 -1
不会改变原数组
var res = arr.indexOf(‘z’)

6、concat() 拼接数据
语法:数组.concat(要拼接的数组或者数据)
返回值:就是拼接好的新的数组
不会改变原数组

var arr = [1,2,3]
//使用concat方法拼接数组
var newArr = arr.concat([4,5,6])
console.log(newArr)   //[1,2,3,4,5,6]

7、splice() 截取数据,用于删除插入和替换数据
语法:数组.splice(开始截取的位置 ,截取的个数 ,第三个参数可选 要用来替换/插入的数据)
返回值:截取出来的数据组成的新的数组
会改变原数组
var res = arr.splice(2,0,10)

8、reverse() 反转数组
语法:数组.reverse()
返回值:反转后的原数组
直接改变原数组
var res = arr.reverse()

9、sort() 是用来给数组排序的

var arr = [2, 3, 1]
// 使用 sort 方法给数组排序
arr.sort()
console.log(arr) // [1, 2, 3]
//a-b  如果它的值为正数,就交换它们的位置
//函数在JavaScript中被称为一等公民,函数可以作为参数传递
//sort这个函数的参数就是一个函数  升序排列(默认)
        var res = arr.sort(function (a, b) { 
            return a - b;
        });
        console.log(arr3);
        console.log(res);

//b-a  如果值为正数,交换它们的位置  降序排列
        var res = arr.sort(function (a, b) { 
            return b - a;
        });
        console.log(arr);
        console.log(res);

降序排列:
	arr.sort()
	arr.reverse

10、join() 把数组里面的每一项内容链接起来,变成一个字符串,不会改变原始数组

var arr = [1, 2, 3]

// 使用 join 链接数组
var str = arr.join('-')

console.log(arr) // [1, 2, 3]
console.log(str) // 1-2-3
五、冒泡排序
	   <script>
        //冒泡排序
        var arr = [8, 9, 62, 46, 333, 874, 275, 6, 47, 999, 5641, 1]
        function fn() {
            //外面for循环控制循环次数
            for (var i = 0; i < arr.length - 1; i++) {
                //里面for循环控制比较
                for (var j = 0; j < arr.length - 1 - i; j++) {
                     // 判断,如果数组中的当前一个比后一个大,那么两个交换一下位置
                    if (arr[j] > arr[j + 1]) {
                        var temp = arr[j]
                        arr[j] = arr[j + 1]
                        arr[j + 1] = temp
                    }
                }
            }
            return arr
        }
        var res = fn(arr)
        document.write(res)
        document.write('<br/>')
    </script>

六、选择排序

在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止

<script>
        //选择排序
        var arr = [8, 9, 62, 46, 333, 874, 275, 6, 47, 999, 5641, 1]
        function fn() {
            //外层循环执行一次,内层循环执行一轮
            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = i + 1; j < arr.length; j++) {
                    if (arr[i] > arr[j]) {
                        var temp = arr[i]
                        arr[i] = arr[j]
                        arr[j] = temp
                    }
                }
            }
            return arr
        }
        var res = fn(arr)
        document.write(res)
 </script>
七、for in
// for 是用来遍历数组的
// for in 是用来遍历对象的
    var obj = {
        name:"Jack",
        age:18
    }
    // 这个 key 只是一个变量  叫什么都可以
    for(var key in obj){
        // console.log(key) 属性名
        // 因为 key 是一个字符串 [] 方式比较实用
        console.log(obj[key])
    }   
//for 遍历出来的索引类型是number类型
//for in 遍历出来的索引类型是string类型
八、判断是否存在某个值

indexOf(元素) 用来找到数组中某一项的索引
=>如果存在返回元素在数组中索引号
=>如果元素不存在,返回-1

var flag = true
if (a.indexOf(n) === -1) {
	flag = false
}
return flag
九、去掉数组重复元素,并返回新数组
// 使用for循环
    var arr = ['a','a','a',1,2,3,3]
    var newArr = []
        // 循环遍历 arr 检测 newArr 当中有没有 arr 的每一项 如果没有就追加到 newArr 里面
        for(var i = 0 ; i < a.length ; i++){
            if(newArr.indexOf(arr[i])  === -1){
                // 没有 那就追加
                newArr.push(arr[i])
            }
        }

//使用forEach
 	   var arr = [10, 20, 10, 30, 10, 40, 30]
        var newArr = []
        arr.forEach(function (item, index) {
            if (newArr.indexOf(item) == -1) {
                newArr.push(item)
            }
            return newArr
        })
        document.write(newArr)
 	
//使用选择排序
    + 思路,把数组里面重复的东西去除掉,把数组里面的元素进行遍历然后进行比较,有相同的就删除掉
    + 使用选择排序去做
        var arr = ['a', 'a', 'a', 2, 3, 2, 3, 3];
        for(var i=0; i<arr.length-1; i++){
            for(var j=i+1; j<arr.length; j++){
                //使用前面的依次和后面的进行比较,如果相等就从数组里面删除对应的项
                //splice(参数1, 参数2); 参数1表示从哪里开始  参数2表示删除几项 
                if(arr[i] == arr[j]){
                    arr.splice(j, 1);
                    //因为把数组里面的数据删除了 那么每一项都要往前挪一位  所以加一个 j--
                    j--;
                }
            }
        }
        console.log(arr);

十、内层空间(堆和栈):

​ + 数据在内存空间里面存储的时候,不同的数据类型存储的位置不不一样

​ + 内层空间分为栈区和堆区

​ + js里面数据类型分为两种

​ 1、基本数据类型,变量存储在内存的栈区

​ 2、引用数据类型

​ 1、数组对象存储在内存的堆区域

​ 2、对象名,数组名存在栈区域

​ 3、栈区域引用变量存储的值是对象在栈区域的内存地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值