您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“JavaScript數組對象和字符串對象怎么創建”,內容詳細,步驟清晰,細節處理妥當,希望這篇“JavaScript數組對象和字符串對象怎么創建”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
JavaScript 中的數組對象可以使用 newArray 或字面量 "[]" 來創。
數組類型檢測有兩種常用的方式,分別是使用instanceof運算符和使用Array.isArray()方法
示例代碼:
var arr = []; var obj = {}; // 第一種方式 console.log(arr instanceof Array);//輸出結果:true console.log(arr instanceof Array);//輸出結果:false // 第二種方式 console.log(Array.isArray(arr));//輸出結果:true console.log(Array.isArray(obj));//輸出結果:false
在上述代碼中,如果檢測結果為true,表示給定的變量是一個數組,如果檢測結果為false,則表示給定的變量不是數組。
JavaScript數組對象提供了添加或刪除元素的方法,可以實現在數組的末尾或開頭添加新的數組元 素,或在數組的末尾或開頭移出數組元素。
方法如下:
方法名 | 功能描述 | 返回值 |
---|---|---|
push(參數 1…) | 數組末尾添加一個或多個元素,會修改原數組 | 返回數組的新長度 |
unshift(參數 1…) | 數組開頭添加一個或多個元素(把數組長度-1,無參數),會修改原數組 | 返回數組的新長度 |
pop() | 刪除數組的最后一個元素,若是空數組則返回undefined,會修改原數組 | 返回刪除的元素的值 |
shift() | 刪除數組的第一個元素,若是空數組則返回undefined,會修改原數組 | 返回第一個元素的值 |
注意: push() 和 unshift() 方法的返回值是新數組的長度,而 pop() 和 shift() 方法返回的是移出的數組元素
示例代碼:
// push var arr = ['pink', 'black', 'white', 'yellow'] console.log(arr.push('red'));// 返回的是數組長度 輸出結果為:5 console.log(arr); // 修改了原來的數組 輸出結果為['pink', 'black', 'white', 'yellow','red'] // unshift var arr = ['pink', 'black', 'white', 'yellow'] console.log(arr.unshift('red', 'blue'));// 返回的是數組長度 輸出結果為:6 console.log(arr);// 修改了原來的數組 輸出結果為['red', 'blue', 'pink', 'black','white', 'yellow'] // pop var arr = ['pink', 'black', 'white', 'yellow'] console.log(arr.pop());// 返回的是刪除的元素 輸出結果為:yellow console.log(arr);// 修改了原來的數組 輸出結果為['pink', 'black', 'white'] // shift var arr = ['pink', 'black', 'white', 'yellow'] console.log(arr.shift());// 返回的是刪除的元素(第一個) 輸出結果為:pink console.log(arr);// 修改了原來的數組 輸出結果為['pink', 'black', 'white']
案例需求:要求在包含工資的數組中,剔除工資達到2000或以上的數據,把小于2000的數重新放 到新的數組里面。
var newArr = []; for (var i = 0; i < arr.length; i++) { if (arr[i] < 2000) { newArr.push(arr[i]);// 相當于:newArr[newArr.length] = arr[i]; } } console.log(newArr);//輸出結果:[1500,1200,1800]
JavaScript數組對象提供了數組排序的方法,可以實現數組元素排序或者顛倒數組元素的順序等。
方法名 | 功能描述 |
---|---|
reverse() | 顛倒數組中元素的位置,該方法會改變原數組,返回新數組 |
sort() | 對數組的元素進行排序,該方法會改變原數組,返回新數組 |
示例代碼:
reverse
// reverse var arr = ['red', 'blue', 'green'] console.log(arr.reverse());//輸出的結果為:['green', 'blue', 'red'] console.log(arr);// 改變原數組['green', 'blue', 'red']
sort有兩種情況:
1.不傳參數
2.傳參數:參數是用來指定按某種順序進行排列的函數即a和b是兩個將要被比較的元素
// sort: 如果調用該方法時沒有使用參數,按照字符編碼的順序進行排序。 var arr1 = [1, 4, 5, 6, 73, 32, 22, 15]; // 不傳參數的情況 console.log(arr1.sort());//輸出的結果為:[1, 15, 22, 32, 4, 5, 6, 73] // 傳參數:參數是用來指定按某種順序進行排列的函數 /*即 a 和 b 是兩個將要被比較的元素*/ arr1.sort(function (a, b) { // return b - a;//降序 // [73, 32, 22, 15, 6, 5, 4, 1] return a - b;//升序 // [1, 4, 5, 6, 15, 22, 32, 73] }) console.log(arr1);
注意
需要注意的是:reverse()和sort()方法的返回值是排序后的數組
sort 如果調用該方法時沒有使用參數,按照字符編碼的順序進行排序
在開發中,若要查找指定的元素在數組中的位置,可以利用Array對象提供的檢索方法。
方法 | 功能描述 |
---|---|
indexOf() | 返回在數組中可以找到給定值的第一個索引,如果不存在,則返回-1 |
lastlndexOf() | 返回指定元素在數組中的最后一個的索引,如果不存在則返回-1 |
示例代碼:
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison']; console.log(beasts.indexOf('bison')); // 輸出結果為: 1 // 找到第二個bison的索引 console.log(beasts.indexOf('bison', 2)); // 輸出結果為: 4 console.log(beasts.indexOf('giraffe')); // 輸出結果為: -1
需求:要求在一組數據中,去除重復的元素
// 聲明數組 function unique(arr) { var newArr = []; // 遍歷數組 for (var i = 0; i < arr.length; i++) { // 判斷新數組中是否有原數組中的元素 // indexOf 結果為-1表示沒有該元素 if (newArr.indexOf(arr[i]) === -1) // 沒有的話就把該元素push到新數組中 newArr.push(arr[i]) } } return newArr; } // 調用數組 var res = unique([1, 2, 3, 4, 3, 2]) console.log(res);//輸出結果:[1,2,3,4]
在開發中,可以利用數組對象的join()和toString()方法,將數組轉換為字符串。
方法 | 功能描述 |
---|---|
toString() | 將數組轉換為字符串,逗號分隔每一項 |
join('分隔符') | 將數組的所有元素連接到一個字符串中 |
toString()
// toString var arr = ['a', 'b', 'c'] console.log(arr.toString());// 輸出結果為:a,b,c
join
參數可選:指定一個字符串來分隔數組的每個元素
如果需要,將分隔符轉換為字符串()小括號里面填寫的是指定的分隔符
如果省略,數組元素用逗號(,)分隔。
如果 separator 是空字符串(''),則所有元素之間都沒有任何字符。
console.log(arr.join());// 輸出結果為:a,b,c console.log(arr.join(''));// 輸出結果為:abc console.log(arr.join('-'));// 輸出結果為:a-b-C
JavaScript還提供了很多其他常用的數組方法。例如,填充數組、連接數組、截取數組元素等。
方法 | 功能描述 |
---|---|
fill() | 用一個固定值填充數組中指定下標范圍內的全部元素 |
splice() | 通過刪除或替換現有元素或者原地添加新的元素來修改數組,返回被刪除項目的新數組 |
slice() | 數組截取,參數為slice(begin, end),包含begin ,但不包含end ,返回被截取項目的新數組 |
concat() | 連接兩個或多個數組,不影響原數組,返回一個新數組 |
fill()
參數:value start end
value:用來填充數組元素的值
start:基于零的索引,從此開始填充,轉化為整數。
end:基于零的索引,在此結束填充,轉換為整數。fill()填充到但不包含end索引。
// fill const array1 = [1, 2, 3, 4]; // 填充0,從數組索引2(包含)開始到4(不包含)結束 console.log(array1.fill(0, 2, 4)); // 輸出結果為: Array [1, 2, 0, 0] // 填充5,從數組索引1(包含)開始 console.log(array1.fill(5, 1)); // 輸出結果為: Array [1, 5, 5, 5] // 填充6 console.log(array1.fill(6)); // 輸出結果為: Array [6, 6, 6, 6]
splice
參數:start deleteCount item1...
start:執行修改的開始位置(從0計數)
deleteCount:整數,表示要移除的數組元素的個數
item1:要添加進去數組的元素
// 從索引 2 的位置開始刪除 0 個元素,插入“drum” var myFish = ["小米", "小明", "小張", "小李"]; var removed = myFish.splice(2, 0, "小紅"); console.log(myFish); console.log(removed); // 運算后的 myFish: ["小米", "小明", "小紅", "小張", "小李"] // 被刪除的元素:[], 沒有元素被刪除 // 從索引 2 的位置開始刪除 0 個元素,插入“drum”和 "guitar" var myFish = ["小米", "小明", "小張", "小李"]; var removed = myFish.splice(2, 0, '小剛', '小蔡'); console.log(myFish); console.log(removed); // 運算后的 myFish: ["小米", "小明", "小剛", "小蔡", "小張", "小李"] // 被刪除的元素:[], 沒有元素被刪除 // 從索引 3 的位置開始刪除 1 個元素 var myFish = ["小米", "小明", "小剛", "小蔡", "小張", "小李"]; var removed = myFish.splice(3, 1); console.log(myFish); console.log(removed); // 運算后的 myFish: ['小米', '小明', '小剛', '小張', '小李'] // 被刪除的元素:['小蔡'] // 從索引 2 的位置開始刪除 1 個元素,插入“trumpet” var myFish = ["小米", "小明", "小剛", "小蔡", "小張", "小李"]; var removed = myFish.splice(2, 1, "小蘭"); console.log(myFish); console.log(removed); // 運算后的 myFish: ['小米', '小明', '小蘭', '小蔡', '小張', '小李'] // 被刪除的元素:["小剛"] // 從索引 0 的位置開始刪除 2 個元素,插入"parrot"、"anemone"和"blue" var myFish = ["小米", "小明", "小張", "小李"]; var removed = myFish.splice(0, 2, '小蘭', '小蔡', '小剛'); console.log(myFish); console.log(removed); // 運算后的 myFish: ['小蘭', '小蔡', '小剛', '小張', '小李'] // 被刪除的元素:['小米', '小明'] // 從索引 2 的位置開始刪除 2 個元素 var myFish = ['小蘭', '小蔡', '小剛', '小張', '小李']; var removed = myFish.splice(myFish.length - 3, 2); console.log(myFish); console.log(removed); // 運算后的 myFish: ['小蘭', '小蔡', '小李'] // 被刪除的元素: ['小蘭', '小蔡', '小李'] // 從索引 2 的位置開始刪除所有元素 var myFish = ['小蘭', '小蔡', '小剛', '小張', '小李']; var removed = myFish.splice(2); console.log(myFish); console.log(removed); // 運算后的 myFish: ['小蘭', '小蔡'] // 被刪除的元素:['小剛', '小張', '小李']
slice
參數:begin end
begin : 從該索引開始提取原數組元素(包含)
end : 在該索引處結束提取原數組元素(不包含)
// 從索引 2 的位置開始截取 var array3 = ['小蘭', '小蔡', '小剛', '小張', '小李']; var getArr = array3.slice(2); console.log(array3); console.log(getArr); // 運算后的 array3:['小蘭', '小蔡', '小剛', '小張', '小李']; // 被截取的元素: ['小剛', '小張', '小李'] // 從索引 2 的位置開始 截取到 索引4 的位置(包含2 不包含4) var array3 = ['小蘭', '小蔡', '小剛', '小張', '小李']; var getArr = array3.slice(2, 4); console.log(array3); console.log(getArr); // 運算后的 array3:['小蘭', '小蔡', '小剛', '小張', '小李']; // 被截取的元素: ['小剛', '小張'] // 從索引 2 的位置開始 截取到 數組的倒數第一個元素(不包含) var array3 = ['小蘭', '小蔡', '小剛', '小張', '小李']; var getArr = array3.slice(2, -1); console.log(array3); console.log(getArr); // 運算后的 array3:['小蘭', '小蔡', '小剛', '小張', '小李']; // 被截取的元素: ['小剛', '小張'] // 截取后兩個元素 var array3 = ['小蘭', '小蔡', '小剛', '小張', '小李']; var getArr = array3.slice(-2); console.log(array3); console.log(getArr); // 運算后的 array3:['小蘭', '小蔡', '小剛', '小張', '小李']; // 被截取的元素: ['小張', '小李']
concat
// 連接兩個數組 const letters = ['a', 'b', 'c']; const numbers = [1, 2, 3]; const concatArr = letters.concat(numbers); console.log(letters);//['a', 'b', 'c'] console.log(concatArr);//['a', 'b', 'c', 1, 2, 3] // 連接三個數組 const num1 = [1, 2, 3]; const num2 = [4, 5, 6]; const num3 = [7, 8, 9]; const numArr = num1.concat(num2, num3); console.log(numArr);//[1, 2, 3, 4, 5, 6, 7, 8, 9] // 將值連接到數組 const arr1 = ['a', 'b', 'c']; const newArr1 = letters.concat(1, [2, 3]); console.log(newArr1);//['a', 'b', 'c', 1, 2, 3]
字符串對象使用new String()來創建,在String構造函數中傳入字符串,這樣就會在返回的字符串對象中保存這個字符串。
var str = new String('送你一朵小紅花') console.log(str) console.log(str.length);//輸出結果為:7 // 看不到常見的屬性和方法 var str1 = '送你一朵小紅花' console.log(str1)
字符串對象提供了用于檢索元素的屬性和方法,字符串對象的常用屬性和方法如下:
方法 | 功能描述 |
---|---|
indexOf(‘要查找的值’,開始的位置) | 返回指定內容在原字符串中的位置, 如果找不到就返回 -1;開始的位置是index 索引號; 參數2可選,規定在字符串中開始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該參數,則將從字符串的首字符開始檢索。 |
lastIndexOf(‘要查找的值’,開始的位置) | 從后往前找,只找第一個匹配的,如果沒有找到匹配字符串則返回 -1;參數2可選,規定在字符串中開始檢索的位置。它的合法取值是 0 到stringObject.length - 1。如省略該參數,則將從字符串的最后一個字符處開始檢索。 |
示例代碼:
// indexOf:參數1:要搜索的子字符串;參數2:可選 var str = new String('送你一朵小紅花,送你一朵小紅花'); // 查找 花 首次出現的位置 var res = str.indexOf('花'); // 查找 花 從第七個位置查找 花 ,第一次出現的位置 var res2 = str.indexOf('花', 7); console.log(str); console.log(str.length);//7 console.log(res);//輸出結果:6 console.log(res2);//輸出結果:14 // lastIndexOf:參數1:要搜索的子字符串;參數2:可選 var str1 = new String('to be or not to be'); // 查找 e 從最后一個字符開始,第一次出現的位置 var res1 = str1.lastIndexOf('e'); // 查找 e 從第8個位置開始倒數,第一次出現的位置 var res3 = str1.lastIndexOf('e', 8); console.log(str1); console.log(str1.length);//15 console.log(res1);//輸出結果:17 console.log(res3);//輸出結果:4
字符串對象提供了用于獲取字符串中的某一個字符的方法。方法如下:
成員 | 作用 |
---|---|
charAt(index) | 獲取index位置的字符,位置從0開始計算 |
charCodeAt(index) | 獲取index位置的字符的ASCII碼 |
str[index] | 獲取指定位置處的字符(HTML5新增)和charAt等效 |
示例代碼:
// 獲取index位置的字符 console.log(str.charAt(0));//輸出的結果為;a // 獲取index位置的字符的ASCII碼 console.log(str.charCodeAt(0));//輸出結果為:97(a的ASCII碼是97) for (var i = 0; i < str.length; i++) { // 獲取指定位置處的字符 console.log(str[i]); }
案例需求:使用charAt()方法通過程序來統計字符串中出現最多的字符和次數。
for (var i = 0; i < str.length; i++) { // 3. 利用chars保存字符串中的每一個字符 var chars = str.charAt(i); console.log(chars); // 4. 利用對象的屬性來方便查找元素 // obj[chars]獲取對象的屬性的屬性值 if (obj[chars] != true) {//如果沒有獲取到當前字符串,值為undefined(轉為布爾值為false) obj[chars] = 1;//給當前對象的屬性對應的屬性值賦值為1 } else { obj[chars]++; //如果獲取到了當前字符串,即對應的屬性值+1 } } console.log(obj); // 2. 統計出現最多的字母 var max = 0; // 保存出現次數最大值 var maxStr = ''; // 保存出現次數最多的字符 // 2.1 遍歷對象的屬性和方法 for (var key in obj) { // 2.2 將對象中屬性的值和max進行比較 if (obj[key] > max) { max = obj[key]; maxStr = key } } console.log('出現最多的字符是:' + maxStr + ' ,共出現了' + max + '次')
字符串對象提供了一些用于截取字符串、連接字符串、替換字符串的屬性和方法。字符串對象的常用屬性和方法如下:
方法 | 作用 |
---|---|
concat(str1,str2, str3…) | concat() 方法用于連接兩個或多個字符串。拼接字符串,等效于+,+更常用該方法沒有改變原有字符串,會返回連接兩個或多個字符串新字符串。 |
slice(start,[end]) | 截取從start位置到end(不包含end)位置之間的一個子字符串可提取字符串的某個部分,并以新的字符串返回被提取的部分 |
substring(start[,end]) | 截取從start位置到end位置之間的一個子字符串,基本和slice相同,但是不接收負值 |
substr(start[,length]) | 截取從start位置開始到length長度的子字符串從起始索引號提取字符串中指定數目的字符 |
toLowerCase() | 獲取字符串的小寫形式 |
toUpperCase() | 獲取字符串的大寫形式 |
split([separator[,limit]) | 使用separator分隔符將字符串分隔成數組,limit用于限制數量可選。參數可指定返回的數組的最大長度。如果設置了該參數,返回的子串不會多于這個參數指定的數組。如果沒有設置該參數,整個字符串都會被分割,不考慮它的長度。 |
replace(str1,str2) | 使用str2替換字符串中的str1,返回替換結果,只會替換第一個字符 |
示例代碼:
var str = 'HelloWord'; // concat var res = str.concat('!!'); console.log(res);//HelloWord!! // slice var res1 = str.slice(1, 5); console.log(res1); //ello // substring var res2 = str.substring(3);//截取從下標為3開始,之后的內容 console.log(res2);//loWord var res3 = str.substring(3, 7);//截取從下標為3開始,到7結束的內容(不包含7) console.log(res3);//loWo // substr var res4 = str.substr(2, 5); console.log(res4);//lloWo // toLowerCase var res5 = str.toLocaleLowerCase(); console.log(res5);//helloword // toUpperCase var res6 = str.toLocaleUpperCase(); console.log(res6);//HELLOWORD // split var str1 = 'How are you doing today?' var res7 = str1.split(' '); console.log(res7);// ['How', 'are', 'you', 'doing', 'today?'] var res8 = str1.split(); console.log(res8);//['How are you doing today?'] var res9 = str1.split(' ', 3); console.log(res9);// ['How', 'are', 'you'] // replace var res10 = str1.replace(' ', ','); console.log(res10);//How,are you doing today?
案例需求:用戶名長度在3~10范圍內,不能出現敏感詞admin的任何大小寫形式。
var res = prompt('請您輸入用戶名') if (res.length < 3 || res.length > 10) { alert('用戶名長度為3—10位,請您重新輸入') } else if (res.toLocaleLowerCase().indexOf('admin') != -1 || res.toUpperCase().indexOf('admin') != -1) { alert('不能出現敏感詞admin') } else { alert('恭喜您,該用戶名可以使用'); }
讀到這里,這篇“JavaScript數組對象和字符串對象怎么創建”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。