[英]How to map items without undefined value in javascript with Array.prototype.map and without Array.prototype.filter()
[英]Why is the output from a Array.prototype.map() of the result of a Array.prototype.filter() not an array?
當我嘗試將 Array.prototype.some() function 用於我認為應該是 Array.prototype.map() from.filter() 結果的數組時,我得到
.some 不是 function
這是一個簡短的片段,展示了足夠設置的錯誤:
// Get all options from dropdown var options = $("#mySelect option"); // Get array of strings matching regex from options var numbers = options.map(function (index, option) { return option.value.match("[0-9]+")[0]; }); // Attempt to use some on the numbers array numbers.some(function (number) { console.log(number); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- Drop down menu with 10 options in words --> <select id="mySelect"> <option value="1">One 1</option> <option value="2">Two 2</option> <option value="3">Three 3</option> <option value="4">Four 4</option> <option value="5">Five 5</option> <option value="6">Six 6</option> <option value="7">Seven 7</option> <option value="8">Eight 8</option> <option value="9">Nine 9</option> <option value="10">Ten 10</option> </select>
你(我)混淆了 JS 數組函數和 JQuery 函數。 The.filter() in your post is actually a JQuery function that returns a JQuery object. From there, map is another JQuery function returning JQuery and thus.some() on your object does not exist as it does not exist as a JQuery function .
一個合適的解決方案是使用 JQuery.each() function 而不是像這樣:
// Get all options from dropdown var options = $("#mySelect option"); // Get array of strings matching regex from options var numbers = options.map(function (index, option) { return option.value.match("[0-9]+")[0]; }); // Iterate through your object with JQuery's.each() numbers.each(function (index, number) { console.log(number); // You can return false to break this loop early similarly to.every() (or inversely to.some) on JS arrays if (number == 5){ return false; } });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- Drop down menu with 10 options in words --> <select id="mySelect"> <option value="1">One 1</option> <option value="2">Two 2</option> <option value="3">Three 3</option> <option value="4">Four 4</option> <option value="5">Five 5</option> <option value="6">Six 6</option> <option value="7">Seven 7</option> <option value="8">Eight 8</option> <option value="9">Nine 9</option> <option value="10">Ten 10</option> </select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.