一、直接指派和引用指派
1.直接指派:
let str = "aaa";
let str2 = str;//這裡是直接指派
str2 = "aaa222";
console.log(str);//輸出aaa
console.log(str2);//輸出aaa222
2.引用指派:
引用指派主要是數組跟對象的變量之間的指派。
let arr=['1','2','3'];//數組
let arr2 = arr;//這裡是引用指派
arr2[0] = '2';
console.log(arr);//輸出2,2,3
console.log(arr2);//輸出2,2,3
let obj =[
{name:'xiaoming',age:'18'},
{name:'hong',age:'11'}
];
let obj2 = obj;//這裡是引用指派
obj2[0].name = 'huahua';
console.log(obj);//輸出...{name:'hong',age:'11'}
console.log(obj2);//輸出...{name:'hong',age:'11'}
是以,字元串中使用直接指派不用擔心,但是到了數組和對象變量(我覺得像python裡的字典),就要注意引用的改變了。
二、數組對象的使用方法:
let arr = ['牛奶', '可樂'];
arr[arr.length-1] = '雪碧';
其實這樣就替換了 ‘可樂’。
2.push()
let arr = ['牛奶', '可樂'];
let w = arr.push('奶茶', '紅牛');
在arr數組末尾添加新的元素。w傳回值就是新數組的長度4。
3.pop()
結果就是去掉數組最後一個元素。
4.splice()
let arr = ['0茶顔悅色','1喜茶','2優茶'];
let g2 = arr.splice(0,3,'哇哈哈哈','達利園','江小白');
console.log(arr);
輸出的就是’哇哈哈哈’,‘達利園’,‘江小白’,0就是要替換的數組下标,3就是從下标0開始,包括0在内往後3個元素被代替。
其實 也可以做插入,比如這樣寫:
也就是從下标0開始,插入3個元素。
5.reverse()
let arr = ['0茶顔悅色','1喜茶','2優茶'];
arr.reverse();
這就是反轉方法,輸出結果就是:‘2優茶’,‘1喜茶’,‘0茶顔悅色’。這個方法很好用,隻要是數組,裡面都能頭尾反轉。
6.substr()、slice()
let str = 'abcdef';
let str2 = str.substr(1,3);//輸出bcd,就是截取下标1,2,3的元素
console.log(str2);
let str3 = str.slice(1,3);//輸出bc,就是截取下标1,2的元素
console.log(str3);
嗯~,就是截取一段元素。他們的差別,看上面輸出結果就知道了,我就不寫了。
7.jon()
let arr3 = [2020, 09, 24]
let date = arr3.join('-');
console.log(date);//輸出2020-09-24
就是使用指定的字元串連接配接起所有數組。
8.split()
let names = '小明,小紅,小白';
let arr4 = names.split(",");
console.log(arr4)//輸出[小明,小紅,小白]
它的作用就是把字元串names以’,‘作為分隔符,把分隔後的内容放入數組中變成元素。
現在可以根據split、reverse、join寫一個讓字元串倒序的函數:
function re(str){
let arr = str.split("");//先把字元串拆開變成數組
arr.reverse();//再把數組反轉
return arr.join("");//再把數組間的逗号去掉,連接配接成字元串
}
9.sort
解釋:使用指定方法對數組中的元素進行排序。其基本準則是:如果傳回值小于0,則元素位置不動;如果大于0,則元素位置互相調換。
具體看個例子:這是一個将arr中的元素分别是:1按年齡升/10降序排列、2按号碼升/20降序排列、3按年齡降序,如果年齡相同則按号碼大的優先。由使用者輸入選擇。我重點是為了介紹sort的作用。
let arr = [
{name:"alex", age:18, sex:"man", num:"10"},
{name:"sky", age:17, sex:"man", num:"101"},
{name:"hsike", age:28, sex:"man", num:"2"},
{name:"rose", age:28, sex:"women", num:"20"},
{name:"roy", age:5, sex:"man", num:"16"},
{name:"mary", age:5, sex:"man", num:"18"},
];
let input = '';
input = prompt("請輸入排序方式編号:(1年齡升序)——(10年齡降序)——(2号碼升序)——(20号碼降序)——(3年齡+号碼降序)");
switch( input){
case '1': arr.sort((x,y)=>{
return x.age - y.age;//前一個人的年齡18,減去後一個人的年齡17,大于0,是以他們互換位置,是以17就在18的上面,也就滿足年齡升序
});break;
case '10': arr.sort((x,y)=>{return y.age - x.age;});break;
case '2': arr.sort((x,y)=>{return x.num - y.num;});break;
case '20': arr.sort((x,y)=>{return y.num - x.num;});break;
case '3': arr.sort((x,y)=>{
if(x.age==y.age){//如果年齡相同則比較号碼
return y.num - x.num;//後一個号碼20減去前一個号碼2,為正數,是以調換hsike和rose,把号碼大的rose移至前面
}
return y.age - x.age;
});break;
default:console.log("輸入錯誤!");break;
}
for(let i=0; i<arr.length; i++){
document.write("姓名:"+arr[i].name+",年齡:"+arr[i].age+",性别:"+arr[i].sex+",号碼:"+arr[i].num+"</br>");
}
輸出結果就是:
姓名:roy,年齡:5,性别:man,号碼:16
姓名:mary,年齡:5,性别:man,号碼:18
姓名:sky,年齡:17,性别:man,号碼:101
姓名:alex,年齡:18,性别:man,号碼:10
姓名:hsike,年齡:28,性别:man,号碼:2
姓名:rose,年齡:28,性别:women,号碼:20