百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> 前端常用的JavaScript操纵(代码实例)
分享文章到:

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

发布时间:09/01 来源:未知 浏览: 关键词:
本篇文章给大家带来的内容是关于前端常用的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):用于将两类可以把对象转换为真正的数组。

  1. 相似数组的对象(必需有length属性)

  2. 可遍历的对象(摆设了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()也只能实现对象的浅拷贝,它只是1级属性复制,比浅拷贝多深拷贝了一层
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.没有块级作用域致使内层变量覆盖外层变量。

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视频教程,请关注PHP中文网。

以上就是前端常用的JavaScript操纵(代码实例)的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

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

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

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

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板