JS(Coursera):More On Arrays

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);

不影響本體

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章