/
/:
push(...items)itemspop()shift()unshift(...items)
splice
delete :
let arr = ["I", "go", "home"];
delete arr[1]; // "go"
alert( arr[1] ); // undefined
// now arr = ["I", , "home"];
alert( arr.length ); // 3
3arr.length == 3
delete obj.key key
:
arr.splice(index[, deleteCount, elem1, ..., elemN])
index deleteCount elem1, ..., elemN
:
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // 1 1
alert( arr ); // ["I", "JavaScript"]
1 1
32:
let arr = ["I", "study", "JavaScript", "right", "now"];
// 3
arr.splice(0, 3, "Let's", "dance");
alert( arr ) // ["Let's", "dance", "right", "now"]
splice :
let arr = ["I", "study", "JavaScript", "right", "now"];
// 2
let removed = arr.splice(0, 2);
alert( removed ); // "I", "study" <--
splice deleteCount 0 :
let arr = ["I", "study", "JavaScript"];
// 2
// 0
// "complex" "language"
arr.splice(2, 0, "complex", "language");
alert( arr ); // "I", "study", "complex", "language", "JavaScript"
:
let arr = [1, 2, 5];
// -1 (1)
// 0 ,
// 3 4
arr.splice(-1, 0, 3, 4);
alert( arr ); // 1,2,3,4,5
slice
arr.slice arr.splice
:
arr.slice(start, end)
"start" "end" ("end" )start end
str.slice
:
let arr = ["t", "e", "s", "t"];
alert( arr.slice(1, 3) ); // e,s (1 3 )
alert( arr.slice(-2) ); // s,t (-2 )
arr.slice() arr
concat
:
arr.concat(arg1, arg2...)
()
arr, arg1, arg2
Symbol.isConcatSpreadable
:
let arr = [1, 2];
// arr [3,4]
alert( arr.concat([3, 4])); // 1,2,3,4
// arr [3,4] [5,6]
alert( arr.concat([3, 4], [5, 6])); // 1,2,3,4,5,6
// arr [3,4] , 5 6
alert( arr.concat([3, 4], 5, 6)); // 1,2,3,4,5,6
:
let arr = [1, 2];
let arrayLike = {
0: "something",
length: 1
};
alert( arr.concat(arrayLike) ); // 1,2,[object Object]
Symbol.isConcatSpreadable concat :
let arr = [1, 2];
let arrayLike = {
0: "something",
1: "else",
[Symbol.isConcatSpreadable]: true,
length: 2
};
alert( arr.concat(arrayLike) ); // 1,2,something,else
/: forEach
:
arr.forEach(function(item, index, array) {
// ... item
});
:
// alert
["Bilbo", "Gandalf", "Nazgul"].forEach(alert);
["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => {
alert(`${item} is at index ${index} in ${array}`);
});
()
indexOf/lastIndexOf and includes
arr.indexOf, arr.lastIndexOf arr.includes :
arr.indexOf(item, from)fromitem-1arr.lastIndexOf(item, from)arr.includes(item, from)fromitemtrue
:
let arr = [1, 0, false];
alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1
alert( arr.includes(1) ); // true
=== false false
arr.includes
includes indexOf/lastIndexOf NaN :
const arr = [NaN];
alert( arr.indexOf(NaN) ); // -1 (0 , === NaN )
alert( arr.includes(NaN) );// true ()
find findIndex
:
let result = arr.find(function(item, index, array) {
// true item
// undefined
});
:
itemindexarray
true item undefined
id name id == 1 :
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
let user = users.find(item => item.id == 1);
alert(user.name); // John
find
item => item.id == 1 find find
filter
find true
find filter :
let results = arr.filter(function(item, index, array) {
// true item results
//
});
:
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
// 2
let someUsers = users.filter(item => item.id < 3);
alert(someUsers.length); // 2
map
arr.map 1
:
let result = arr.map(function(item, index, array) {
// item
})
:
let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length)
alert(lengths); // 5,7,6
sort(fn)
arr
:
let arr = [ 1, 2, 15 ];
// arr
arr.sort();
alert( arr ); // 1, 15, 2
1, 15, 2
"2" > "15"
arr.sort() 2
:
function compare(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
:
function compareNumeric(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
let arr = [ 1, 2, 15 ];
arr.sort(compareNumeric);
alert(arr); // 1, 2, 15
arr html
alert :
[1, -2, 15, 2, 0, 8].sort(function(a, b) {
alert( a + " <> " + b );
return a - b;
});
:
let arr = [ 1, 2, 15 ];
arr.sort(function(a, b) { return a - b; });
alert(arr); // 1, 2, 15
localeCompare str.localeCompare
:
let countries = ['sterreich', 'Andorra', 'Vietnam'];
alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, sterreich ()
alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,sterreich,Vietnam (!)
reverse
arr.reverse arr
:
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert( arr ); // 5,4,3,2,1
arr
split join
(John, Pete, Mary)
str.split(delim) delim
:
let names = 'Bilbo, Gandalf, Nazgul';
let arr = names.split(', ');
for (let name of arr) {
alert( `A message to ${name}.` ); // A message to Bilbo ()
}
split 2:
let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2);
alert(arr); // Bilbo, Gandalf
s split(s) :
let str = "test";
alert( str.split('') ); // t,e,s,t
arr.join(str) split arr str
:
let arr = ['Bilbo', 'Gandalf', 'Nazgul'];
let str = arr.join(';');
alert( str ); // Bilbo;Gandalf;Nazgul
reduce/reduceRight
forEach, for for..of
map
:
let value = arr.reduce(function(accumulator, item, index, arr) {
// ...
}, initial);
:
:
accumulatorinitialinitialitemindexarr
reduce
let arr = [1, 2, 3, 4, 5];
let result = arr.reduce((sum, current) => sum + current, 0);
alert(result); // 15
2 reduce
-
suminitial(reduce)0current11 sum = 12(2)sum = 3
:
sum |
current |
result |
|
|---|---|---|---|
0 |
1 |
1 |
|
| 2 | 1 |
2 |
3 |
| 3 | 3 |
3 |
6 |
| 4 | 6 |
4 |
10 |
| 5 | 10 |
5 |
15 |
initial :
let arr = [1, 2, 3, 4, 5];
// reduce ( 0 )
let result = arr.reduce((sum, current) => sum + current);
alert( result ); // 15
reduce 2
reduce
:
let arr = [];
// Error: reduce
// reduce arr
arr.reduce((sum, current) => sum + current);
Array.isArray
typeof :
alert(typeof {}); // object
alert(typeof []); // object()
Array.isArray(value) value true false
alert(Array.isArray({})); // false
alert(Array.isArray([])); // true
thisArg
findfiltermapsort thisArg
:
arr.find(func, thisArg);
arr.filter(func, thisArg);
arr.map(func, thisArg);
// ...
// thisArg
thisArg func this
filter army thisArg :
let army = {
minAge: 18,
maxAge: 27,
canJoin(user) {
return user.age >= this.minAge && user.age < this.maxAge;
}
};
let users = [
{age: 16},
{age: 20},
{age: 23},
{age: 30}
];
// army.canJoin true
let soldiers = users.filter(army.canJoin, army);
alert(soldiers.length); // 2
alert(soldiers[0].age); // 20
alert(soldiers[1].age); // 23
users.filter(army.canJoin) army.canJoin this=undefined
users.filter(army.canJoin, army) users.filter(user => army.canJoin(user))
:
-
/:
push(...items),pop(),shift(),unshift(...items).splice(pos, deleteCount, ...items)posdeleteCountitemsslice(start, end)startend(end)concat(...items):itemsitems
-
:
indexOf/lastIndexOf(item, pos)positem-1includes(value)valuetruefalsefind/filter(func)true/findIndexfind
-
:
forEach(func)func
-
:
map(func)funcsort(func)reverse()split/joinreduce/reduceRight(func, initial)func
-
:
Array.isArray(arr)arr
sort, reverse splice
99%:
-
fnmap/truetrue,false||&&fnarr.some()truefnarr.every()falseevery:function arraysEqual(arr1, arr2) { return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); } alert( arraysEqual([1, 2], [1, 2])); // true -
arr.fill(value, start, end)
startendvalue -
arr.copyWithin(target, start, end)
startendtarget()
<code><pre>10(plnkr, JSBin, codepen)