深入淺出:了解字符串,數組和對象之間的方法和轉換


一、字符串概念及常用的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值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM