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


本文摘自PHP中文网,作者云罗郡主,侵删。

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

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

例:删除"10km"中的km

1

2

3

4

5

6

7

8

var str = "10km"

 

//方法一:

var res = str.replace('km', '')

 

//方法二:

var res = str.split('km').join('')

//join方法不传参默认使用逗号作为分隔符

2.数组去重

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

var arr = [1, 2, 3, 1, 2]

 

//方法一:

var res = [...new Set(arr)]

 

//方法二:

var res = Array.from(new Set(arr))

 

//方法三:

var res = [];

for (var i in arr) {

    if (res.indexOf(arr[i] === -1) {

        res.push(arr[i])

    }

}

 

//方法四:

var res = []

arr.map((item, index) => {

    if (res.indexOf(item) === -1){

        res.push(item)

    }

})

附:Array.from()的用法:

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

var obj1 = {

    0: 'a',

    1: 'b',

    2: 'c'

}

var arr1 = Array.from(obj1)

console.log(arr1) // []

 

/* 1. 类数组对象,具有length属性,而普通对象是没有length属性的。*/

/* 2. 类数组对象的属性名必须为非负整数,对象中的属性名会被当做字符串处理。*/

 

var obj2 = {

    0: 'a',

    1: 'b',

    2: 'c',

    length: 2

}

var arr2 = Array.from(obj2)

console.log(arr2) // ["a", "b"]

 

var obj3 = {

    0: 'a',

    1: 'b',

    2: 'c',

    length: 4

}

var arr3 = Array.from(obj3)

console.log(arr3) // ["a", "b", "c", undefined]

 

var obj4 = {

    0: 'a',

    1: 'b',

    2: 'c',

    length: 3

}

var arr4 = Array.from(obj4, item => item + 1)

console.log(arr4) // ["a1", "b1", "c1"]

 

var obj5 = {

    "1": "a",

    "0": "b",

    length: 2

}

var arr5 = Array.from(obj5)

console.log(arr5) // ["b", "a"]

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

var obj = {

    0: 'a',

    1: 'b',

    length: 2

}

//方法一:

Array.from(obj)

 

//方法二:

Array.prototype.slice.call(obj)

 

//方法三:

Array.prototype.concat.apply([], obj)

 

//方法四:

Array.prototype.splice.call(obj, 0) // 返回被删除的元素,原对象obj会被破坏掉

console.log(obj) // obj: {length: 0}

 

// 上述的Array.prototype 均可用[]代替

4.数组或对象的深拷贝

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

//方法一:

JSON.parse(JSON.stringify(obj))

 

//方法二:递归遍历

function clone (obj) {

  var res = obj.constructor === Array ? [] : {}

  for (var i in obj) {

    res[i] = typeof obj[i] === 'object' ? clone(obj[i]) : obj[i] // 即obj[i]为数组或对象,继续拷贝

  }

  return res

}

 

//附:数组浅拷贝

var arr = ['a', ['b', ['c']]]

 

//1.使用slice()

var res = arr.slice(0)

console.log(res) // ['a', ['b', ['c']]]

res[1][1] = 'b'

console.log(res) // ['a', ['b', ['b']]]

console.log(arr) // ['a', ['b', ['b']]]

 

//2.使用concat()

var arr = ['a', ['b', ['c']]]

 

var res = [].concat(arr)

res[1][1] = 'b'

console.log(res) // ['a', ['b', ['b']]]

console.log(arr) // ['a', ['b', ['b']]]

 

//Object.assign()也只能实现对象的浅拷贝,它只是一级属性复制,比浅拷贝多深拷贝了一层

var obj = {a: "a", b: {c: "d"}}

var res = Object.assign({}, obj)

res.b.c= "e"

console.log(res) // {a: "a", b: {c: "e"}}

console.log(obj) // {a: "a", b: {c: "e"}}

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

1

2

3

4

5

6

7

8

var date = new Date().getDate();

function f(){

    console.log(date);

    if(false){

        var date = 0;//变量提升

   }

}

f();//undefined

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

let a = 1;

let b = 2;

function tag(arr, value1, value2){

    console.log(arr); //["hello ", " world ", ""]

    console.log(value1); //3

    console.log(value2); //2

}

tag`hello ${a + b} world ${a * b}`;

/**

如果函数名后的模板字符串中没有变量,则直接将其作为函数参数调用。

如果存在变量则先将模板字符串处理成多个参数,再调用函数。

 

处理规则:

1.默认该函数第一个参数为数组,该数组的成员是模板字符串中那些没有变量替换的部分。

2.变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间。

以此类推,故arr中第三个成员为"",原因是${a * b}的变量替换发生在第二个成员与第三个成员之间,

所以必须存在第三个成员。

3.函数的其他参数,都是模板字符串各个变量被替换后的值。

 

函数形如:

function tag(stringArr, ...value){}

*/

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

以上就是前端常用的JavaScript操作(代码实例)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

20+道必知必会的vue面试题(附答案解析)

vue前端ui框架有哪些?

html表单的工作原理(图文)

你值得了解的一种css获取图片主题色的小技巧(分享)

什么是前端路由及解释

javascript web workers的构建块及5个使用场景

你知道原生html组件是什么吗?原生html组件的介绍

前端三大主流框架是什么?

vue的响应式原理是什么?

优秀web前端ui框架推荐

更多相关阅读请进入《JavaScript操作》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...