JavaScript入门速成

菜鸟教程:JavaScript 教程 | 菜鸟教程 (runoob.com)

 

对象操作

1. 对象增删改查

1.1 创建对象 let obj = {}

1.2 新增属性 obj.a = 1

1.3 修改属性 obj.a = 'a'

1.4 查询属性 obj.a

1.5 删除属性 delete obj.a

测试1:可以直接用浏览器的控制台测试

 测试2:创造一个html文件,浏览器打开文件,用console.log输出到控制台

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript演示</title>
</head>
<body>
  <script>
    let obj = {}
    //  const obj2 = {}  常量
    //  var obj = {}  不常用
    obj.a = '1'
    console.log(obj)
    obj.a = 'xxx'
    console.log(obj)
    obj.a = true
    console.log(obj)
    console.log(obj.a)
    delete obj.a
    console.log(obj)
  </script>
</body>
</html>

 

2. 其他操作

2.1 obj[a] = 1    //对象属性赋值

2.2 Object.assign(目标对象,原对象)    //对象属性复制给另一个对象,深拷贝

2.3 let { name } = user    //解构语法,相当于let name = user.name

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript演示2</title>
</head>
<body>
<script>

  //其他操作
  let user = {}
  user.name = '张三'
  user.age = 23
  user['address'] = '中国北京'
  console.log(user)

  let teacher = {}
  Object.assign(teacher, user)    //深拷贝
  console.log('=====================')
  console.log(teacher)
  teacher.birth = '1993.01.01'
  console.log('===========teacher==========')
  console.log(teacher)
  console.log('===========user==========')
  console.log(user)

  let teacher1 = Object.assign({}, user)

  let teacher2 = user    //浅拷贝
  teacher2.xxx = 'hahaha'
  console.log('=============teacher2=============')
  console.log(teacher2)
  console.log(user)

  let teacher3 = JSON.parse(JSON.stringify(user))//深拷贝,先把user转换成字符串,再把字符串转换成JSON对象,javascript里的对象和json对象可以等同使用
  teacher3.yyy = 'ssssss'
  console.log('=============teacher3=============')
  console.log(teacher3)
  console.log(user)

  console.log('==============user拿出一个属性================')
  console.log(user.name)
  console.log(user['name'])
  console.log('===============解构语法======================')
  let { name } = user    // 相当于let name = user.name
  console.log(name)

</script>
</body>
</html>

2.4 ?.   b = a?.name a是undefined或者null b不报错

let a = null
let b = a.name
console.log(b)

2.5 ??  b = a ?? c  a是undefined或者null 则赋值c给b

2.6 ||    b = a || c a是undefined或者null 则取c

2.7 ??=  b ??= a  左侧undefined或者null 则取右侧的值

3. 循环对象属性for (const key in obj)  obj[key]

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript演示3</title>
</head>
<body>
<script>

  let a = null
  let b = a?.name
  console.log(b)

  let c = null
  let d = 1
  let e = c ?? d
  console.log(e)
  let f = c || d
  console.log(f)
  console.log(c ??= d)

  let jsObj = { 1 : 'a', 2 : 'b' }
  console.log(jsObj)
  for(const key in jsObj){
    jsObj[key] = jsObj[key] + '111'  //对象的key是数字时,只能使用 obj[key] 的形式,不能用 obj.key 的形式获取值
    debugger
    if(key === 1){  // == 只比较内容,不比较类型, === 比较内容和类型
      jsObj[key] = jsObj[key] + 'bbb'
    }
  }
  console.log(jsObj)
</script>
</body>
</html>

debugger可以实现前端调试,看到属性的内容,for循环时key是字符串所以 ===1 不成立 

 

数组操作

1. 数组的增删改查

1.1 创建数组 let arr = []

1.2 新增元素

  arr[0] = 'a' arr[2] = 3 

  push(‘aa’)  //往数组尾部新增一个内容

  unshift()    //往数组头部新增一个内容

1.3 删除元素

  splice(start, num)    //从 start 开始 删除num个,删完后数组长度 = 原长度 - num

  pop()    ////从尾部删除一个,删完后数组长度 = 原长度 - 1

  shift()    //从头部删除一个,删完后数组长度 = 原长度 - 1

1.4 修改元素 arr[index] = 1

1.5 查询元素 arr[index]

1.6 截取数组 slice(start,end)  //从 start 开始到 end 位置结束,切割后的数组包括start不包括end,不写end会切割到最后

1.7 合并数组 concat(arr1, arr2)  //合并后的数组内容arr1在前arr2在后

1.8 字符串变数组 split(reg)  //按照reg分割字符串,生成数组,reg可以是 '' ,分割每一个字

1.9 数组变字符串 join(reg)  //数组元素用reg拼接,默认使用逗号分割

1.10 排序sort()    //[有坑] [1,2,10] -> [1,10,2] ,根据unicode编码排序, sort((a,b) => a-b) 这样就能解决

1.11 倒序reverse()    //[有坑] 使用 sort((a,b) => b-a) 这样就能实现倒序

1.12 获取元素序号 indexOf() lastIndexOf()

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript-array数组演示</title>
</head>
<body>
<script>
  //新建数组、新增元素、修改数组、查询数组
  let arr = []
  console.log(arr)
  let arr1 = new Array()
  console.log(arr1)
  arr1[1] = 'xxxx'
  console.log(arr1)
  arr1.push('yyyyy')
  console.log(arr1[2])
  arr1[3] = true
  console.log(arr1)
  arr1.unshift('aaaa')
  console.log(arr1)
  arr1[9999] = 1
  console.log(arr1)
  //删除元素
  arr1.splice(0, 1)
  console.log(arr1)
  arr1.shift()
  console.log(arr1)
  arr1.pop()
  console.log(arr1)
  //截取数组、合并数组、字符串转换、排序数组
  let arrN = [1,2,3,4,5,6]
  let arrM = arrN.slice(1 , 3)  //包头不包尾
  console.log(arrM)
  arr3 = [1,3]
  arr4 = [4,2]
  arr5 = arr3.concat(arr4)
  console.log(arr5)
  let str = '测试数组'
  console.log(str.split(''))
  console.log(arrN.join('|||'))
  let sortArr = [1,2,10,7,9,22,11]
  console.log(sortArr.sort())
  console.log(sortArr.reverse())
  console.log(sortArr.sort((a,b)=>a-b))
  console.log(sortArr.sort((a,b)=>b-a))
  let indexArr = [1,2,3,4]
  console.log(indexArr.indexOf(2))
  console.log(indexArr.lastIndexOf(2))

</script>
</body>
</html>

1.13 [神器] filter()   //可以筛选和删除元素,返回的是一个组数

1.14 [神器] find()  //返回的是数组里的一个元素,如果有多个满足的元素,返回第一个满足的元素

1.15 [神器] map()    [1,2,3].map(v => v * 2)     [{name:'a'},{name:'b'}].map(v => v.name)  //返回一个数组

1.16 forEach((item.index) => {...})

1.17 reduce

  语法:arr.reduce(function(pre,cur,index,arr){...},init);

  prev累计器累计回调的返回值,表示上一次调用回调时的返回值,或者初始值 init

  cur表示当前正在处理的数组元素

  index表示当前正在处理的数组元素的索引

  arr表示原数组

  init初始值

  arr = [1,2,3]    let sum = arr.reduce((pre, cur) => pre + cur)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript-array数组演示2</title>
</head>
<body>
<script>
  // filter
  let users = [{name: '张三', age: 20}, {name: '张三', age: 20}, {name: '李四', age: 21}, {name: '王五', age: 21}]
  let newUsers = users.filter(user => user.age > 20 && user.name.includes(''))
  console.log(newUsers)
  let newUsers2 = users.filter(user => user.name !== '李四')
  console.log(newUsers2)
  // find
  let lisi = users.find(user => user.name === '李四')
  console.log(lisi)
  let user2 = users.find(user => user.age > 20)
  console.log(user2)
  let lisiIndex = users.findIndex(user => user.name === '李四')
  console.log(lisiIndex)
  // map
  let names = users.map(user => user.name + 'a')
  console.log(names)
  // forEach
  users.forEach((item, index) => {
    console.log(item)
    console.log(index)
  })
  //  reduce
  let sum = users.reduce((pre, current) => {
    return pre + current.age
  },0)
  console.log(sum)

  let nameCount = users.reduce((pre, current) => {
    if (current.name in pre){
      pre[current.name]++
    } else {
      pre[current.name] = 1
    }
    return pre
  },{})
  console.log(nameCount)
</script>
</body>
</html>

 

JSON - 数据传输的形式

https://www.json.cn/  json格式校验和格式优化显示

1.标准的JSON  //key必须是字符串,双引号

1.1 json对象 {}

let jsonObj = {"name": "张三","age": 23,"man": true, "bank": {"addr": "", "money": 100}, "children": [{"name": "李四","age": 23}]}

1.2 json数组 []

let jsonArr = [1, "a", true, {}, [{"name": "李四","age": 23}]]

1.3 JSON.parse(),将字符串转换成json对象

     JSON.stringify(),将对象转换成字符串

posted @ 2024-07-29 12:50  少年阿川  阅读(72)  评论(0)    收藏  举报