1. 程式人生 > 實用技巧 >JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

一、Array

1、some()和every()

some()是對陣列中每一項執行指定函式,如果該函式對任一項返回true,則返回true。

every()是對陣列中的每一項執行給定函式,如果該函式對每一項返回true,則返回true。

var array = [1,3,5,7,9,11,13,15,17]
undefined
array.some(function(item,index){
    return item>9
})
//true

返回true

var array = [1,3,5,7,9,11,13,15,17]
undefined
array.every(function(item,index){
    return item>9
})
//false

返回 false

2、join()

join() 方法用於把陣列中的所有元素放入一個字串。

var arr =[4,5,34,3453,3453,33,"哈哈哈哈"];
var arr2 = arr.join("");
console.log(arr2);
console.log(typeof(arr2)); //string
console.log(typeof(arr));   //object
//45343453345333哈哈哈哈
//string
//object

輸出:

//45343453345333哈哈哈哈
//string
//object

3、concat()

連線2個以及更多的陣列,返回一個新陣列。

該方法不會改變現有的陣列,而僅僅會返回被連線陣列的一個副本。

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
 
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"

var array3 = arr.concat(arr2);
console.log(array3);
console.log(arr);
console.log(arr2);

輸出:

(6)["George", "John", "Thomas", "James", "Adrew", empty]

(3)["George", "John", "Thomas"]
(3)["James", "Adrew", empty]

4、pop()和push()和shift()和unshift()

會改變陣列的本身的長度及內容。

不同的是push()、pop()是從陣列的尾部進行增減unshift()、shift()是從陣列的頭部進行增減

(1)push()是對尾部新增若干元素,unshift()是對頭部新增若干元素,返回陣列新長度

var arr = [1, 2];
arr.push(3,4);
console.log(arr);   //[1,2,3,4]

arr.unshift(0,0.5);  
console.log(arr);  //[0,0.5,1,2,3,4]

(2)pop()從陣列的尾部刪除1個元素(刪且只刪除1個),並返回被刪除的元素;空陣列是繼續刪除,不報錯,但返回undefined;而shift()是對頭部刪除1個元素(只刪除1個)。。。

//接上面陣列arr
arr.pop()   //返回4
console.log(arr);  //[0, 0.5, 1, 2, 3]

arr.shift() //返回0
console.log(arr) //[0.5,1,2,3]

5、map()

map“對映”,也就是原陣列被“對映”成對應新陣列。

var data = [1, 2, 3, 4];
var array = data.map(function (item) {
  return item * item;
});
console.log(array) //[1,4,9,16]

輸出:[1,4,9,16]

var users = [
  {name: "張含韻", "email": "[email protected]","age":"18"},
  {name: "江一燕",   "email": "[email protected]","age":"34"},
  {name: "李小璐",  "email": "[email protected]","age":"28"}
];

var emailsAge = users.map(function (item) { return {email:item.email,age:item.age}});

輸出

[{email:"[email protected]",age:"18"},{email:"[email protected]",age:"34"},{email:"[email protected]",age:"28"}]

6、filter()

filter()方法用於把Array的某些元素過濾掉,然後返回剩下的元素,並建立一個包含所有通過測試的元素的新陣列。
function isBigEnough(element) {
     return element >= 10;
 }
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); 
console.log(filtered);//[ 12, 130, 44 ]

輸出:[12,130,44]

功能(1):一個Array中,刪掉偶數,只保留奇數

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var num = arr.filter(function (x) {
     return x % 2 !== 0;
});
console.log(num) //[1,5,9,15]

功能(2):把Array中的空字串刪掉

 var arr = ['A', '', 'B', null, undefined, 'C', '  '];
 var string = arr.filter(function (s) {
     return s && s.trim(); // 注意:IE9以下的版本沒有trim()方法
 });
 console.log(string); // ['A', 'B', 'C']

功能(3):可以巧妙地去除Array的重複元素,

注意:去除重複元素依靠的是indexOf總是返回第一個元素的位置,後續的重複元素位置與indexOf返回的位置不相等,因此被filter濾掉了。

var  r, arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
    return self.indexOf(element) === index;
});
console.log(r.toString()); //apple,strawberry,banana,pear,orange