数组
- 含义
- 创建
- 添加数据
- 获取数据
- 删除数据
- 修改数据
- 遍历数组
- 查询数组里面是否有某一个数据
- 数组的去重
- 数组的反转
- 数组的拼接
- 数组的排序
数组的拓展
- forEach
- 可以替代for循环 获取到数组里面的每一项和下标
// item 代表数组里面的每一项数据 // index 代表数组的下标 数组名.forEach(function(item, index){ })
- map
- 根据一个数组计算之后得到一个计算后的新数组
var 新数组 = 数组名.map(function(item, index){ // 需要有一个返回值 return 数据 // 会将这个数据 放到一个新数组 })
- filter
- 根据某一个条件过滤一个数组 得到一个过滤后的新数组
var 新数组 = 数组名.filter(function(item, index){ // 需要有一个返回值 // 返回一个条件 return 条件 // 如果条件为真 就会把item放到新数组里面 如果条件为假 就会把item去掉了 })
- some
- 判断数组里面是否有满足条件的数据
var 布尔值 = 数组名.some(function(item, index){ // 需要有一个返回值 // 返回一个条件 拿每一项item和条件进行比较 return 条件 // 最终会返回一个布尔值 只要有一项满足 就返回true 所有的都不满足才会返回false })
- every
- 判断数组里面是否每一项都满足
var 布尔值 = 数组名.every(function(item, index){ // 需要有一个返回值 // 返回一个条件 拿每一项item和条件进行比较 return 条件 // 所有的数据都满足才会返回true })
- reduce
- 用于数组的计算操作
var 结果 = 数组名.reduce(function(prev, cur){ // prev 为上一次的结果 如果有初始值 第一次就是初始值 如果没有传初始值 会默认将数组的第一项当成初始值 // cur 为当前项 }, 初始值) // 一般求和的时候初始值为0 求乘积的时候初始值为1
对象 Object
-
含义:是一种数据类型 属于复杂数据类型
-
具有键值对(key-value)结构的数据集合
-
创建对象
- 字面量
- var 对象名 = {}
- 内置构造函数
- var 对象名 = new Object()
- 字面量
-
动态添加数据
- 点语法
- 对象名.键名 = 值
- 下标法
- 对象名[‘键名’] = 值
- 点语法
-
动态修改数据
- 点语法
- 对象名.键名 = 值
- 下标法
- 对象名[‘键名’] = 值
- 点语法
-
获取数据
- 点语法
- 对象名.键名
- 下标法
- 对象名[‘键名’]
- 当我们访问一个对象里面不存在的key 那么得到的值是undefined 和数组的越界访问相似
- 点语法
-
删除数据
- 点语法
- delete 对象名.键名
- 下标法
- delete 对象名[‘键名’]
- 点语法
-
遍历对象的数据
- for循环是无法遍历对象
- for…in
for(var key in 对象名) { console.log(key) // 对象的键名 console.log(对象名[key]) // 因为此时的键名是一个变量 // 对象名.key 或者 对象名['key'] 这时候就会把键名当成固定值 就会去对象里面查找一个键名叫做key }
-
对象特性
- 键名的唯一性
-
对象没有length属性
-
存储具有一定逻辑关系的数据: 一个商品
// 一个商品
var product = {
goodsName: '迫击炮',
price: 999.99,
src: 'https://gimg3.baidu.com/rel/src=https%3A%2F%2Fgips3.baidu.com%2Fit%2Fu%3D3089995048%2C1288775178%26fm%3D3028%26app%3D3028%26f%3DPNG%26fmt%3Dauto%26q%3D99%26size%3Df1138_640&refer=http%3A%2F%2Fwww.baidu.com&app=2010&size=w560&n=0&g=0n&q=100&fmt=auto?sec=1680714000&t=0d7eb162ae745dc6077104f94931422b',
saleCount: 1000000
}
// 多个商品
var goodsList = [
{
goodsName: '迫击炮',
price: 999.99,
src: 'https://gimg3.baidu.com/rel/src=https%3A%2F%2Fgips3.baidu.com%2Fit%2Fu%3D3089995048%2C1288775178%26fm%3D3028%26app%3D3028%26f%3DPNG%26fmt%3Dauto%26q%3D99%26size%3Df1138_640&refer=http%3A%2F%2Fwww.baidu.com&app=2010&size=w560&n=0&g=0n&q=100&fmt=auto?sec=1680714000&t=0d7eb162ae745dc6077104f94931422b',
saleCount: 1000000
},
{
goodsName: '迫击炮',
price: 999.99,
src: 'https://gimg3.baidu.com/rel/src=https%3A%2F%2Fgips3.baidu.com%2Fit%2Fu%3D3089995048%2C1288775178%26fm%3D3028%26app%3D3028%26f%3DPNG%26fmt%3Dauto%26q%3D99%26size%3Df1138_640&refer=http%3A%2F%2Fwww.baidu.com&app=2010&size=w560&n=0&g=0n&q=100&fmt=auto?sec=1680714000&t=0d7eb162ae745dc6077104f94931422b',
saleCount: 1000000
}
]
js的数据存储方式
-
数据类型
- 基础数据类型
- number string boolean undefined null
- 复杂数据类型(引用数据类型)
- object array
- 基础数据类型
-
在js里面存储数据有两种方式
- 栈内存: 小 js在使用数据的时候只会在栈里面查找
- 堆内存: 大 在堆里面每存储一个数据 都会返回这个内存空间的地址(引用)
- 基础数据类型变量名和值都是存储在栈内存里面
- 复杂数据类型变量名是存储在栈里面 数据不是存储在栈里面的 是存储堆里面的 在栈里面存储是一个堆内存空间的地址
-
值比较和引用比较
- 两个基础数据类型的比较是拿值进行比较的 只要长得一模一样 就相等
- 两个复杂数据类型的比较是拿地址(引用)进行比较的 即使长得一模一样 也不相等
-
值传递和引用传递
- 两个基础数据类型的赋值 是将一个变量的值传递给另一个变量 这个过程叫做值传递 一个变化 另一个不会受到影响
- 两个复杂数据类型的赋值 是将一个变量的地址传递给另一个变量 这个过程叫做引用传递 一个变化 另一个也会受到影响