1. 程式人生 > 實用技巧 >處理集合_對映陣列_5

處理集合_對映陣列_5

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>提取weapon陣列的粗略方法</title>
    <script src="../unitl/test.js"></script>
    <style>
        #results li.pass {color:green;}
        #results li.fail {color:red;}
    </style>


</head>

<body>
    <ul id="results"></ul>

</body>

<script>

    const ninjas = [

        {name:"Yagyu",weapon:"shuriken"},
        {name:"Yoshi",weapon:"katana"},
        {name:"Kuma",weapon:"wakizashi"}

    ];

    const weapons = [];
    ninjas.forEach(ninja =>{
        weapons.push(ninja.weapon);
    });


    assert(weapons[0] === "shuriken" 
        && weapons[1] === "katana"
        && weapons[2] === "wakizashi"
        && weapons.length === 3,"The new Array contains all weapons"
        );

</script>
</html>

首先建立一個空陣列,使用forEach方法遍歷ninjas陣列。然後,將每個ninja物件的weapon屬性新增到weapons陣列中。可以想象,基於已有陣列的元素建立陣列是非常常見的,
因此它具有一個特殊的名稱:對映陣列。主要思想是將陣列中的每個元素屬性對映到新陣列的元素上。javascript的map函式可以實現便捷操作。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>對映陣列</title>
    <script src="../unitl/test.js"></script>
    <style>
        #results li.pass {color:green;}
        #results li.fail {color:red;}
    </style>


</head>

<body>
    <ul id="results"></ul>

</body>

<script>


    const ninjas = [
        {name:"Yagyu",weapon:"shuriken"},
        {name:"Yoshi",weapon:"katana"},
        {name:"Kuma",weapon:"wakizashi"}
    ];

    const weapons = ninjas.map(ninja=>ninja.weapon);
    assert(weapons[0] === "shuriken"
           && weapons[1] === "katana"
           && weapons[2] === "wakizashi"
           && weapons.length ===3, "The new Array contains all weapons!"
    );


</script>
</html>

本例子中引入的js: test.js

內建的map方法建立了一個全新的陣列,然後遍歷輸入的陣列。對輸入陣列的每個元素,在新建的陣列上,都會基於回掉函式的執行結果建立一個對應的元素。