您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/2/20 14:04:59发布18次查看
本篇文章给大家带来的内容是关于前端常用的javascript操作(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1.删除字符串中指定的一段字符例:删除10km中的km
var str = 10km//方法一:var res = str.replace('km', '')//方法二:var res = str.split('km').join('')//join方法不传参默认使用逗号作为分隔符
2.数组去重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):用于将两类可以把对象转换为真正的数组。
类似数组的对象(必须有length属性)
可遍历的对象(部署了iterator接口的,string,es6新增的map和set)。
参数:第一个是数组,必传;第二个是一个函数(类似map函数),对数组元素进行操作后再返回数组,可选;第三个是对于this关键字的指向,可选。
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.将伪数组对象转化为数组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.数组或对象的深拷贝//方法一: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= econsole.log(res) // {a: a, b: {c: e}}console.log(obj) // {a: a, b: {c: e}}
5.没有块级作用域导致内层变量覆盖外层变量。var date = new date().getdate();function f(){ console.log(date); if(false){     var date = 0;//变量提升   }}f();//undefined
6.es6中标签模板的用法: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视频教程,请关注。
以上就是前端常用的javascript操作(代码实例)的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product