当前位置:Gxlcms > html代码 > 前端常用的JavaScript操作(代码实例)

前端常用的JavaScript操作(代码实例)

时间:2021-07-01 10:21:17 帮助过:29人阅读

本篇文章给大家带来的内容是关于前端常用的JavaScript操作(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.删除字符串中指定的一段字符

例:删除"10km"中的km

  1. var str = "10km"
  2. //方法一:
  3. var res = str.replace('km', '')
  4. //方法二:
  5. var res = str.split('km').join('')
  6. //join方法不传参默认使用逗号作为分隔符

2.数组去重

  1. var arr = [1, 2, 3, 1, 2]
  2. //方法一:
  3. var res = [...new Set(arr)]
  4. //方法二:
  5. var res = Array.from(new Set(arr))
  6. //方法三:
  7. var res = [];
  8. for (var i in arr) {
  9. if (res.indexOf(arr[i] === -1) {
  10. res.push(arr[i])
  11. }
  12. }
  13. //方法四:
  14. var res = []
  15. arr.map((item, index) => {
  16. if (res.indexOf(item) === -1){
  17. res.push(item)
  18. }
  19. })

附:Array.from()的用法:

Array.from(arr, mapfn,thisArg):用于将两类可以把对象转换为真正的数组。

  1. 类似数组的对象(必须有length属性)

  2. 可遍历的对象(部署了Iterator接口的,String,ES6新增的Map和Set)。

参数:第一个是数组,必传;第二个是一个函数(类似map函数),对数组元素进行操作后再返回数组,可选;第三个是对于this关键字的指向,可选。

  1. var obj1 = {
  2. 0: 'a',
  3. 1: 'b',
  4. 2: 'c'
  5. }
  6. var arr1 = Array.from(obj1)
  7. console.log(arr1) // []
  8. /* 1. 类数组对象,具有length属性,而普通对象是没有length属性的。*/
  9. /* 2. 类数组对象的属性名必须为非负整数,对象中的属性名会被当做字符串处理。*/
  10. var obj2 = {
  11. 0: 'a',
  12. 1: 'b',
  13. 2: 'c',
  14. length: 2
  15. }
  16. var arr2 = Array.from(obj2)
  17. console.log(arr2) // ["a", "b"]
  18. var obj3 = {
  19. 0: 'a',
  20. 1: 'b',
  21. 2: 'c',
  22. length: 4
  23. }
  24. var arr3 = Array.from(obj3)
  25. console.log(arr3) // ["a", "b", "c", undefined]
  26. var obj4 = {
  27. 0: 'a',
  28. 1: 'b',
  29. 2: 'c',
  30. length: 3
  31. }
  32. var arr4 = Array.from(obj4, item => item + 1)
  33. console.log(arr4) // ["a1", "b1", "c1"]
  34. var obj5 = {
  35. "1": "a",
  36. "0": "b",
  37. length: 2
  38. }
  39. var arr5 = Array.from(obj5)
  40. console.log(arr5) // ["b", "a"]

3.将伪数组对象转化为数组

  1. var obj = {
  2. 0: 'a',
  3. 1: 'b',
  4. length: 2
  5. }
  6. //方法一:
  7. Array.from(obj)
  8. //方法二:
  9. Array.prototype.slice.call(obj)
  10. //方法三:
  11. Array.prototype.concat.apply([], obj)
  12. //方法四:
  13. Array.prototype.splice.call(obj, 0) // 返回被删除的元素,原对象obj会被破坏掉
  14. console.log(obj) // obj: {length: 0}
  15. // 上述的Array.prototype 均可用[]代替

4.数组或对象的深拷贝

  1. //方法一:
  2. JSON.parse(JSON.stringify(obj))
  3. //方法二:递归遍历
  4. function clone (obj) {
  5. var res = obj.constructor === Array ? [] : {}
  6. for (var i in obj) {
  7. res[i] = typeof obj[i] === 'object' ? clone(obj[i]) : obj[i] // 即obj[i]为数组或对象,继续拷贝
  8. }
  9. return res
  10. }
  11. //附:数组浅拷贝
  12. var arr = ['a', ['b', ['c']]]
  13. //1.使用slice()
  14. var res = arr.slice(0)
  15. console.log(res) // ['a', ['b', ['c']]]
  16. res[1][1] = 'b'
  17. console.log(res) // ['a', ['b', ['b']]]
  18. console.log(arr) // ['a', ['b', ['b']]]
  19. //2.使用concat()
  20. var arr = ['a', ['b', ['c']]]
  21. var res = [].concat(arr)
  22. res[1][1] = 'b'
  23. console.log(res) // ['a', ['b', ['b']]]
  24. console.log(arr) // ['a', ['b', ['b']]]
  25. //Object.assign()也只能实现对象的浅拷贝,它只是一级属性复制,比浅拷贝多深拷贝了一层
  26. var obj = {a: "a", b: {c: "d"}}
  27. var res = Object.assign({}, obj)
  28. res.b.c= "e"
  29. console.log(res) // {a: "a", b: {c: "e"}}
  30. console.log(obj) // {a: "a", b: {c: "e"}}

5.没有块级作用域导致内层变量覆盖外层变量。

  1. var date = new Date().getDate();
  2. function f(){
  3. console.log(date);
  4. if(false){
  5. var date = 0;//变量提升
  6. }
  7. }
  8. f();//undefined

6.ES6中标签模板的用法:

  1. let a = 1;
  2. let b = 2;
  3. function tag(arr, value1, value2){
  4. console.log(arr); //["hello ", " world ", ""]
  5. console.log(value1); //3
  6. console.log(value2); //2
  7. }
  8. tag`hello ${a + b} world ${a * b}`;
  9. /**
  10. 如果函数名后的模板字符串中没有变量,则直接将其作为函数参数调用。
  11. 如果存在变量则先将模板字符串处理成多个参数,再调用函数。
  12. 处理规则:
  13. 1.默认该函数第一个参数为数组,该数组的成员是模板字符串中那些没有变量替换的部分。
  14. 2.变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间。
  15. 以此类推,故arr中第三个成员为"",原因是${a * b}的变量替换发生在第二个成员与第三个成员之间,
  16. 所以必须存在第三个成员。
  17. 3.函数的其他参数,都是模板字符串各个变量被替换后的值。
  18. 函数形如:
  19. function tag(stringArr, ...value){}
  20. */

以上就是对的全部介绍,如果您想了解更多有关HTML视频教程,请关注PHP中文网。

以上就是前端常用的JavaScript操作(代码实例)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行