小穎之前寫過一篇文章:JavaScript Array 對象方法 以及 如何區分javascript中的toString()、toLocaleString()、valueOf()方法中有分享過slice()和splice()的用法。今天把slice、splice和split放一起,再看看有哈子區別嘻嘻,因為用的時候老混,放一起總結下,也方便后期查詢。嘻嘻
目錄:
代碼:
<script type="text/javascript"> let arry = [1, 2, 3, 4, 5, 6]; /**************slice*******************/ // 1.slice(數組)不改變原數組 // 用法:arrayObject.slice(start,end)截取從索引為start開始(包括start)到索引到end之前(不包括end)得值 let _arr1 = arry.slice(1, 5); console.log('數組arry:' + arry); console.log('數組_arr1:' + _arr1); //如果不傳入參數二,那么將從參數一的索引位置開始截取,一直到數組尾 let _arr2 = arry.slice(2); console.log('數組arry:' + arry); console.log('數組_arr2:' + _arr2); //如果不傳入參數二,且參數一為負數(-2),將從參數倒數(從右向左)第2個位置開始截取,一直到數組尾 let _arr3 = arry.slice(-2); console.log('數組arry:' + arry); console.log('數組_arr3:' + _arr3); //當只傳入一個參數,是負數時,並且參數的絕對值大於數組length時,會截取整個數組 let _arr4 = arry.slice(-7); console.log('數組arry:' + arry); console.log('數組_arr4:' + _arr4); //當傳入兩個參數一正一負時,start為正,end為負,且end+數組的length > start,則正常截取,當end+數組的length <= start 時,將返回一個空數組 let _arr5 = arry.slice(1, -1); console.log('數組arry:' + arry); console.log('數組_arr5:' + _arr5); let _arr6 = arry.slice(1, -5); console.log('數組arry:' + arry); console.log('數組_arr6:' + _arr6); //當傳入兩個參數一正一負時,start為負,end為正,且start+數組的length < end,則正常截取,當start+數組的length >= end 時,將返回一個空數組 let _arr7 = arry.slice(-5, 5); console.log('數組arry:' + arry); console.log('數組_arr7:' + _arr7); let _arr8 = arry.slice(-5, 0); console.log('數組arry:' + arry); console.log('數組_arr8:' + _arr8); let _arr9 = arry.slice(-5, 1); console.log('數組arry:' + arry); console.log('數組_arr9:' + _arr9); //2.slice(字符串) // slice方法復制string的一部分來構造一個新的字符串,用法與參數勻和數組的slice方法一樣; let stringA = "1,2,3,4,5,6,7"; let _string1 = stringA.slice(1, 7); console.log('stringA長度:' + stringA.length); console.log('_string1:' + _string1); </script>
實例1:
let arry = [1, 2, 3, 4, 5, 6]; /**************splice*******************/ // 1.splice(數組)改變原數組 // 用法:arrayObject.splice(index,howmany,item1,.....,itemX)splice() 方法可刪除從 index 處開始的零個或多個元素,並且用參數列表中聲明的一個或多個值來替換那些被刪除的元素。如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數組。 let _arr1 = arry.splice(1, 2,22,23); console.log('數組arry:' + arry); console.log('數組_arr1:' + _arr1);
實例2:
let arry = [1, 2, 3, 4, 5, 6]; // /**************splice*******************/ // // 1.splice(數組)改變原數組 // // 用法:arrayObject.splice(index,howmany,item1,.....,itemX)splice() 方法可刪除從 index 處開始的零個或多個元素,並且用參數列表中聲明的一個或多個值來替換那些被刪除的元素。如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數組。 // 如果start為負數,則截取從倒數(從右向左數)第幾個到數組末尾之間的值,並從倒數第幾個位置開始插入新的值。 let _arr2 = arry.splice(-2, 2,22,23); console.log('數組arry:' + arry); console.log('數組_arr2:' + _arr2);
參數 | 描述 |
---|---|
separator | 必需。字符串或正則表達式,從該參數指定的地方分割 stringObject。 |
howmany | 可選。該參數可指定返回的數組的最大長度。如果設置了該參數,返回的子串不會多於這個參數指定的數組。如果沒有設置該參數,整個字符串都會被分割,不考慮它的長度。 |
// split(字符串) // 用法:stringObject.split(separator,howmany)把一個字符串分割成字符串數組 // 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每個字符之間都會被分割。 let stringA1 = "1,2,3,4,5,6,7"; let _stringArry1 = stringA1.split(""); console.log('stringA1:' + stringA1); console.log('_stringArry1:' + _stringArry1); let stringA2 = "1.2.3.4.5.6.7"; let _stringArry2 = stringA2.split("."); console.log('stringA2:' + stringA2); console.log('_stringArry2:' + _stringArry2);