一、字符串概念及常用的API方法:
字符串:凡是用雙引號或單引號引起來的字符都叫做字符串
1、創建字符串的3種方法;
(1)、構造函數----》構造出來一個對象
var str = new String() 例子:var str = new String("我就是我,不一樣的煙火,我看自己上火") console.log(str)
(2)、關鍵字
var str = String()
(3).字面量
var str = ""; var str = ''; var str = String("我就是我,不一樣的煙火,我看自己上火") console.log(str) var str ="我就是我,不一樣的煙火,我看自己上火"; console.log(str) 原字符串永遠都不會被改變 var str = "你這一輩子有沒有為別人拼過命?"; str[0] = "我"; console.log(str)
2.字符串常用的API:
(1)、charAt:輸入下標返回相對應的值
str.charAt(下標) var str = "人前一杯酒,各自飲完。人后一片海,獨立上岸"; console.log(str.charAt(3))
(2)、indexOf:輸入值返回對應的下標 如果沒有則返回-1
語法:str.indexOf() var str = "人前一杯酒,各自飲完。人后一片海,獨立上岸"; console.log(str.indexOf("人"))
(3)、字符串截取:slice、substring、substr
slice:當輸入一個值得時候是截取的起始位置 (算自身) slice、substring:當輸入2個值得時候第一個值代表起始位置(算自身) 第二個值是結束位置(不算自身) substr:當輸入2個值得時候第一個值代表起始位置(算自身) 第二個值代表截取的長度 例:var str = "人前一杯酒,各自飲完,人后一片海,獨立上岸"; console.log(str.slice(2,6)) console.log(str.substring(2,6)) console.log(str.substr(2,6))
(4)、去掉前后空格:trim
例:var str = " 你好 "; var str1 = "再見" console.log(str) console.log(str1) console.log(str.trim())
(5)、split:將字符串轉換為數組
(6)、replace():替換。第一參數是需要替換的字符 第二個參數是替換成的字符,返回值是新的字符串
var str = "人與人之間的安全距離是一百二十二公分,跟你喜歡的人在一起,你會努力去縮短這個距離"; var newStr = str.replace("人","神"); console.log(str) console.log(newStr)
(7)、將json字符串轉json對象的方法:
例1、var obj =eval('('+ str +')'); 例2、var obj = str.parseJSON();//由JSON字符串轉換為JSON對象 例3、var obj = JSON.parse(str);//由JSON字符串轉換為JSON對象
二、數組常見的例題:
(1).讓數組中的元素交換位置(重要) var arr = [10,20]; var temp = arr[0]; arr[0] = arr[1]; arr[1] = temp; console.log(arr) (2)、求數組的最大數和最小數(重要) var arr = [10,20,30,40,50]; //最大數 function maxNum(arr){ var max = arr[0]; for(var i=0;i<arr.length;i++){ if(max<arr[i]){ max = arr[i]; } } return max; } console.log(maxNum(arr))
1、數組常見的API:
(1)、push:尾部添加;返回值:是數組的長度(該方法會改變元素數組)
arr.push(); 例:var arr = [10,11,12,13]; var newArr = arr.push(14); console.log(newArr,arr);
(2)、unshift:頭部添加; 返回值:是數組的長度( 該方法會改變元素原數組)
arr.unshift();
(3)、pop: 尾部刪除;返回值:是刪除的數字;(該方法會改變元素原數組)
arr.pop();
(4)、shift:頭部刪除;返回值:是刪除的數字;( 該方法會改變元素原數組)
arr.shift();
(5)、sort():排序; 返回值:是排序好的數字;( 該方法會改變元素原數組)
arr.sort();
如果sort內部傳遞了參數的話那么就是按照數字的排序進行排序
如果sort內部沒有傳遞參數的話則按照ASCII進行排序
var newArr = arr.sort(function(a,b){
return a-b;
});
var arr = [1,2,3,4,5,6];
var newArr = arr.sort(function(){
return Math.random()-0.5;
});
console.log(newArr,arr);
(6)、reverse():反轉
var arrb = [1,2,3,4,5,6]; ar newArr = arrb.reverse(); console.log(arrb,newArr)
2.數組常見的API2:
(1)、concat:數組的拼接;返回值:拼接以后新的數組(原數組不會發生改變)
語法:arr.concat(第二個數組); 例: var arr = [1,2,3]; var arr1 = [4,5,6]; var newArr = arr.concat(arr1); console.log(newArr,arr,arr1)
(2)、join:將數組轉換為字符串;( 原數組不會發生改變)
語法:arr.join("");參數:任意符號 把數組按照什么樣子進行轉換成字符串 例:var arr = [10,20,30,40]; var str = arr.join("/"); console.log(str,arr)
(3)、split:將字符串轉換為數組 //字符串的方法
語法:str.split();參數:字符串里面自帶的一些符號 或者你想要哪種符號進行分割 但是前提是字符串里面必須有這個符號 例:var str = "10,20,30,40"; var arr = str.split(","); var newArr = []; for(var i=0;i<arr.length;i++){ newArr.push(Number(arr[i])); } console.log(newArr)
(4)、toString:將數組轉換為字符串;----->自己去查-----
語法:arr.toString(); var arr = [10,20,30,40]; var str = arr.toString(""); console.log(str,arr)
(5)、eval():傳入一個字符串,然后將字符串解析成js代碼去執行
(6)、slice:截取;(原數組不會發生改變)
語法:arr.slice() 當傳入1個參數的時候這個參數代表截取的起始位置 當傳入2個參數的時候第一個參數代表截取的起始位置但是不算自身 第二個參數代表截取結束的位置 例:var arr = [10,20,30,40,50,60,70,80,90,91,92,93,94]; var newArr = arr.slice(3,7); console.log(newArr,arr)
(7)、splice():截取;( 原數組會發生改變)
語法:arr.splice(); 當傳入1個值得時候這個值代表截取的起始位置(不算自身) 當傳入2個值得時候第一個值代表截取起始的位置第二個值代表截取的長度 當傳入三個值得時候,如果第二個值是0的話代表的插入 第一個值代碼插入的位置,第三個值插入的數字 當傳入三個值得時候,如果第二個值是非0的數字的數代表替換,第一個值是插入的位置,第三個值是插入的數字,第二個值還代表替換的長度 例:var arr = [10,20,30,40,50,60,70,80,90,91,92,93,94]; var newArr = arr.splice(3,3,"你好"); console.log(newArr,arr)
3.什么是偽數組,如何將偽數組轉化為標准數組
這里把符合以下條件的對象稱為偽數組:
1,具有length屬性
2,按索引方式存儲數據
3,不具有數組的push,pop等方法
偽數組(類數組):無法直接調用數組方法或期望length屬性有什么特殊的行為,不具有數組的push,pop等方法,但仍可以對真正數組遍歷方法來遍歷它們。典型的是函數的argument參數,還有像調用document.getElementsByTagName, document.childNodes之類 的,它們返回的NodeList對象都屬於偽數組。
可以使用以下函數將偽數組轉化為真正的Array對象(兼容問題處理)。
function makeArray(c) { try { return Array.prototype.slice.call(c); } catch (e) { var ret = [], i, len = c.length; for (i = 0; i < len; i++) { ret[i] = (c[i]); } return ret; } }
三、對象:
什么是一個對象?萬物皆是對象 對象作用:存儲信息、命名空間 三種方法: 1、構造函數 var obj = new Object();是一個Object 2、關鍵字 var obj = Object();返回值{} 3、字面量 var obj = {}:返回值{} var obj = new Object(); var obj1 = Object(); var obj2 = {}; console.log(obj2) 如果一個變量當做屬性的話 那么這個屬性是只屬於這個對象的(婚前是屬於大家的 婚后是屬於自己的) //添加數據 屬性:key值 ; 屬性值:val ;obj.key = val; var obj = {a:3}//數據的類型是key:val 可以存放多個鍵值對 每個之間用逗號隔開 obj.name = "唐文"; obj.sex = "不詳"; obj.age //上面這個值永遠都是key值 //下面這個值可以是一個變量 如果加""則是屬性 不加引號則是變量 var name = "bbbb"; obj[name] = 333; //刪除 delete obj.name //添加方法 obj.fn = function() { alert(1) } console.log(sex)
JSON對象轉字符串
var last=obj.toJSONString(); //將JSON對象轉化為JSON字符 var last=JSON.stringify(obj); //將JSON對象轉化為JSON字符
對象常用
1.獲取對象key值得常用方法,hasOwnProperty,
var jsonObject1 = { "name": "xiaoming", "age": 29 }, var keys1 = []; for (var p1 in jsonObject1) { if (jsonObject1.hasOwnProperty(p1)) keys1.push(p1); } alert(keys1);
2.如果不使用 hasOwnProperty,給Object 添加自己的屬性時,也會輸出出來
Object.prototype.test = "I am test"; var jsonObject = { "name": "xiaoming", "age": 29 }, keys = []; for (var p in jsonObject) keys.push(p); alert(keys); //name,age, test
3.ES6獲取key:Object.getOwnPropertyNames
var obj={a:1,b:2}; Object.getOwnPropertyNames(obj)
4.獲取數組對象的key和值
arr.forEach((v,i)=>{ Object.keys(v).forEach(v=>{ console.log(v)//取到了key console.log(arr[i][v])//取到了值 }) })
(2)let keyarr = Object.keys(obj).sort;//es6獲取對象的key值
