簡體   English   中英

為什么 Array.prototype.filter() 結果的 Array.prototype.map() 中的 output 不是數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM