溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

前端常用的JavaScript操作示例

發(fā)布時間:2021-02-23 11:17:09 來源:億速云 閱讀:117 作者:清風(fēng) 欄目:web開發(fā)

這篇“前端常用的JavaScript操作示例”文章,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要參考一下,對于“前端常用的JavaScript操作示例”,小編整理了以下知識點,請大家跟著小編的步伐一步一步的慢慢理解,接下來就讓我們進入主題吧。

JavaScript的特點

1.JavaScript主要用來向HTML頁面添加交互行為。 2.JavaScript可以直接嵌入到HTML頁面,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。 3.JavaScript具有跨平臺特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運行。

例:刪除"10km"中的km

var str = "10km"

//方法一:
var res = str.replace('km', '')

//方法二:
var res = str.split('km').join('')
//join方法不傳參默認使用逗號作為分隔符
2.數(shù)組去重
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):用于將兩類可以把對象轉(zhuǎn)換為真正的數(shù)組。

  1. 類似數(shù)組的對象(必須有l(wèi)ength屬性)

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

參數(shù):第一個是數(shù)組,必傳;第二個是一個函數(shù)(類似map函數(shù)),對數(shù)組元素進行操作后再返回數(shù)組,可選;第三個是對于this關(guān)鍵字的指向,可選。

var obj1 = {
	0: 'a',
	1: 'b',
	2: 'c'
}
var arr1 = Array.from(obj1)
console.log(arr1) // []

/* 1. 類數(shù)組對象,具有l(wèi)ength屬性,而普通對象是沒有l(wèi)ength屬性的。*/
/* 2. 類數(shù)組對象的屬性名必須為非負整數(shù),對象中的屬性名會被當(dāng)做字符串處理。*/

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.將偽數(shù)組對象轉(zhuǎn)化為數(shù)組
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.數(shù)組或?qū)ο蟮纳羁截?/h5>
//方法一:
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]為數(shù)組或?qū)ο?,繼續(xù)拷貝
  }
  return res
}

//附:數(shù)組淺拷貝
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()也只能實現(xiàn)對象的淺拷貝,它只是一級屬性復(fù)制,比淺拷貝多深拷貝了一層
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.沒有塊級作用域?qū)е聝?nèi)層變量覆蓋外層變量。
var date = new Date().getDate();
function f(){
	console.log(date);
	if(false){
	    var date = 0;//變量提升
   }
}
f();//undefined
6.ES6中標簽?zāi)0宓挠梅ǎ?/h5>
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}`;
/**
如果函數(shù)名后的模板字符串中沒有變量,則直接將其作為函數(shù)參數(shù)調(diào)用。
如果存在變量則先將模板字符串處理成多個參數(shù),再調(diào)用函數(shù)。

處理規(guī)則:
1.默認該函數(shù)第一個參數(shù)為數(shù)組,該數(shù)組的成員是模板字符串中那些沒有變量替換的部分。
2.變量替換只發(fā)生在數(shù)組的第一個成員與第二個成員之間、第二個成員與第三個成員之間。
以此類推,故arr中第三個成員為"",原因是${a * b}的變量替換發(fā)生在第二個成員與第三個成員之間,
所以必須存在第三個成員。
3.函數(shù)的其他參數(shù),都是模板字符串各個變量被替換后的值。

函數(shù)形如:
function tag(stringArr, ...value){}
*/

以上是“前端常用的JavaScript操作示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI