已經連續更新了第四天了,但願各位大佬們,能夠給出寶貴的意見,順便給小弟點一讚👍。今天和你們嘮一下數組(Array)和字符串(String)的一些方法和屬性:
來吧既然走到了這裏,就歇歇腳吧算法
說實話看到數組這麼多的方法我就腦瓜子疼,唉沒辦法硬着頭皮上吧數組
let a = [1,2,3]
console.log(a.length) // 3
複製代碼
let a = [1,2,3]
console.log(a.join()) // 1,2,3
複製代碼
let a = [1,2,3]
console.log(a.reverse()) // [3, 2, 1]
複製代碼
let a = [1,2,3];
delete a[1]; // a在索引1的位置再也不有元素
1 in a // false 數組索引1並未在數組中定義
a.length // 3 delete操做並不影響數組長度
複製代碼
let a = [1,2,3]
a.shift() //a變成了[2,3] 返回:1
let b = [[1,2],3,4]
b.shift() //b 變成了[3,4] 返回:[1,2]
複製代碼
// 其實push和pop就是容許將數組當作棧來使用
let stack = [1,2,3]
stack.pop() // stack:[1,2] stack.length = 2 返回: 3
let stack1 = [1,2,[3,4]]
stack1.pop() //stack1:[1,2] stack1.length = 2 返回:[3,4]
複製代碼
let a = [ ];
a.unshift(1); //a:[1] 返回:1
a.unshift(2); //a:[2,1] 返回:2
複製代碼
let stack = [ ]
stack.push(1,2) // stack:[1,2] 返回:2
stack.push([4,5]) //stack:[1,2,[4,5]] 返回:3
複製代碼
// Array.concat()方法建立並返回一個新數組 ,可是concat()不會扁平化數組
let a = [1,2,3];
a.concat(4.5) // 返回 [1,2,3,4,5]
a.concat([4,5]) // 返回 [1,2,3,4,5]
a.concat([4,5],[6,7]) //返回[1,2,3,4,5,6,7]
a.concat(4,[5,[6,7]]) //返回[1,2,3,4,5,[6,7]]
複製代碼
let a = [1,2,3,4,5]
a.slice(0,3) // 返回:[1,2,3]
a.slice(3) //返回[4,5]
a.slice(1.-1) //返回[2,3,4] 參數中的負數,表示相對於數組中最後一個元素的位置
a.slice(-3,-2) //返回 [3]
複製代碼
let a = new Array('sunday','apple','jiujiu')
a.sort() //返回值['apple','jiujiu','sunday']<br>
//若是數組包含undefined元素,他們會被排到數組的尾部
let b = [33,4,111,222]
b.sort() //[111,222,33,4] 得出的事字母表排序
b.sort( function (a,b) { //數值順序:4,33,111,222
return a-b; //根據順序,返回負數,0,正數
})
其他建議你們看一下《JavaScript權威指南》
複製代碼
// 第一個參數指定了插入或刪除的起始位置,第二個參數指定了應該從數組刪除的元素個數,<br>
//若是省略第二個參數,從起點開始到數組結尾的全部元素都將被刪除。
let a = [1,2,3,4,5,6,7,8]
a.splice(4) //返回[5,6,7,8] a:[1,2,3,4]
a.splice(1,2) //返回[2,3] a:[1,4]
a.splice(1,1) //返回[4] a:[4]
// splice()的前兩個參數指定了須要刪除的數組元素,緊隨其後的任意個數的參數指定了,須要插入到數組中的元素,從第一個參數指定的位置插入
let a = [1,2,3]
a.splice(2,2,'a','b') //返回[] a:[1,2,'a','b',3]
複製代碼
[1,2,3].toString() // '1,2,3'
['a','b','c'].toString() // 'a,b,c'
['a',[2,'c']].toString() // 'a,2,c'
複製代碼
// 傳遞的函數爲forEach()的第一個參數,而後forEach()使用<br>//三個參數調用該函數:數組元素,元素索引和數組自己
let arr = [1,2,3,4,5,6]
//計算數組元素的和值
let sum = 0;
arr.forEach(function(value) {
sum += value
})
// sum的返回值爲21
// 爲每一個數組元素的值加1
arr.forEach(function(v,i,a) {
a[i] = v+1
})
//數組返回值 [2,3,4,5,6,7]
/**
注意一下,forEach沒法在全部元素都傳遞給調用的函數以前終止遍歷,
其實就是說,forEach中沒有break語句,若是要提早終止,就在forEach()方法放在try塊中,並能拋出一個異常,拋出異常,循環會提早終止
*/
function foreach(a,f,t) {
try{
a.forEach(f,t);
}catch (e) {
if(e === foreach.break) return;
else throw e
}
}
foreach.break = new Error('StopIterration');
複製代碼
// callback:必須的參數,對數組每一項要執行的函數
// thisArg:可選,規定callback回調函數this所指向的對象。
let arr = [1,2,3,4,5,6]
let mapArr = arr.map(function(item,index,array) {
return item*2
})
// 返回值爲[2,4,6,8,10,12]
let arr = [1,2,3,4,5,6]
let obj = {num:2}
let mapArr = arr.map(function(item,index,array) {
return item*this.num
},obj)
// 返回值爲[2,4,6,8,10,12]
複製代碼
let arr = [1,2,3,4,5,6,,7]
let newArr = arr.filter(function(x) { return x < 3 }) // [1,2]
複製代碼
let a = [1,2,3,1]
a.indexOf(1) //返回索引 0 a[0]是1
a.lastIndexOf(1) //返回索引 3 a[3]是1
a.indexOf(4) //返回-1,沒有值爲4的元素
複製代碼
Array.isArray([]) //true
Array.isArray({}) //false
[] instanceof Array // true
複製代碼
/**數組實例的`find`方法,用於找出第一個符合條件的數組
成員。它的參數是一個回調函數,全部數組成員依次執行該
回調函數,直到找出第一個返回值爲`true`的成員,
而後返回該成員。若是沒有符合條件的成員,則返回`undefined`。*/
[1, 4, -5, 10].find((n) => n < 0) // -5
// findIndex()返回下標
[1,4,-5,10].findIndex(n) => n < 0) // 下標爲2
複製代碼
includes(value,start)
複製代碼
let arr = ['a', 'b','c', 'd', NaN]
arr.includes('a') //true
arr.includes(NaN) //true
arr.indexOf(NaN) //-1
複製代碼
fill(value,start,end)
複製代碼
const arr = ['a', 'b', 'c', 'd']
console.log(arr.fill('ss', 1, 3)) // ["a", "ss", "ss", "d"]
const arr2 = ['a', 'b', 'c', 'd']
console.log(arr.fill('ss')) // ["ss", "ss", "ss", "ss"]
複製代碼
/*
在一個神話故事中,有一隻小兔住在一個周長爲一公里的
圓形神湖旁,A.B兩點把這個神湖分紅兩部分,已知小兔從B點出發,
沿逆時針方向繞神湖作跳躍運動,它每跳8分之3公里休息一次,若是跳到A點正好休息,
那麼就會通過特別通道AB滑倒B點,從B點繼續跳。
它每通過一次特別通道,神湖半徑就擴大一倍,
現知小兔共休息1000次,這時神湖周長是多少公里?(AB爲圓的直徑)*/
//神湖周長
var c = 1000;
// 跳躍一次的距離
var jump = 375;
// 到A點休息時跳躍的次數
var j = 0;
// 跳躍1000次
for (var i = 1; i <= 1000; i++) {
// 跳躍到c/2
if(jump * (i-j) % c == c/2) {
// 周長加倍
j = i;
c *= 2;
}
}
// 在控制檯打印周長
console.log(c) //128000
複製代碼