Array
- You’ll learn some advanced array functions
SORTING
array.sort()
- Alphabetical order
var pets = ["Dog" , "Cat" , "Rabbit" , "Hamster"];
pets.sort();
按字母顺序
array.reverse()
Descending order
By combining sort() and reverse()
Finding an Element
array.indexOf(target)
元素不存在返回 -1
MORE
pass a second value to indexOf() to control where to start the search
array.indexOf(target , startPosition);
返回 startPosition 开始的第一个target的位置(index)
<script>
var pets=["Rabbit","Dog","Hamster","Dog","Rabbit","Rabbit","Cat","Hamster","Rabbit"];
var rabbitPositions=[], startSearchAt=0;
var target = "Rabbit";
do{
foundAt=pets.indexOf(target , startSearchAt);
if(foundAt != -1){
startSearchAt = foundAt+1;
rabbitPositions.push(foundAt);
}
}while(foundAt != -1);
</script>
Finding Element Backwards
array.lastIndexOf(target)
starting from the last element in array
SLICE():不影响本体
- Extract part of an array by array.slice(startPosition):
var pets=["Dog" , "Cat", "Rabbit" , "Hamster"];
var result = pets.slice(1);
- You can also set where to stop , by array.slice(startPosition , endPosition):
//not include endPosition
var pets=["Dog" , "Cat" , "Rabbit", "Hamster"];
var result = pets.slice(1 , 3);
tips : chrome开发者工具 Console
SPLICE():影响本体
- splice() is used when you want to remove element(s) anywhere from an array
- array.splice(position , quantity)
- splice() returns the removed element(s)
var pets=["Dog" , "Cat" , "Rabbit", "Hamster"];
var result = pets.splice(1 , 1);
remove
![]()
pets 会有影响
- add sth anywhere in an array
array.splice(position , 0 , element)
var pets=["Dog" , "Cat", "Hamster"];
var result = pets.splice(2, 0 ,"Rabbit");
add
result is [] (doesn’t return anything)
![]()
replace sth anywhere in an array
array.splice(position , quantity , element(s))用 elements去替换从position开始的quantity个数目的元素。返回的是被替换下来的元素数组,数组大小为quantity,quantity与element(s)的大小没有关系。
var pets=["Dog" , "Cat", "Hamster"];
var result = pets.splice(1, 1 ,"Rabbit","Fish");
replace
Array Functions
- You’ll learn some more advanced array functions
there are many , but look at these two
forEach()
var pets=["Dog" , "Cat" , "Rabbit", "Hamster"];
pets.forEach(alert);
you think forEach works
function forEach(theArray , fn){
for(var i = 0 ; i<theArray.length ; i++)
{
fn(theArray[i] , i, theArray);
}
}
wirte your function fn
var numbers = [1, 2, 3, 4, 5];
numbers.forEach( function(elem , idx , arr) {
arr[idx]= elem * elem;
});
alert(numbers);
自定义函数,
elem代表numbers中的元素
idx为索引
arr为numbers数组
影响本体
map()
- map(function)stores the result of each execution of function into an array it returns.
//how map works
function map(theArray , fn){
var results=[];
for(var i=0 ; i< theArray.length ; i++){
results.push( fn(theArray[i] ,i , theArray));
}
return results;
}
write your own function
var square = function(e1){return e1 * e1;}
var numbers = [1,2,3,4,5];
var results = numbers.map(square);
不影响本体