尝试理解对选择选项进行排序的 .each() 回调
Trying to understand .each() callback that sorts select options
我正在学习js/jquery,正在做这个练习,按字母顺序对选择选项进行排序。这是他们给出的解决方案:
<div id="target">
<select>
<option val="a">aaa</option>
<option val="c">ccc</option>
<option val="d">ddd</option>
<option val="b">bbb</option>
</select>
</div>
<script>
var options = {};
$('#target option').each(function(i){
var option = $(this);
options[option.text()] = option;
});
var keys = Object.keys(options).sort();
var select = $('#target select').empty();
$.each(keys, function(i, key){
select.append(options[key]);
});
</script>
$.each
的回调函数中的i
参数是否与$('#target option').each(function(i)
中的i
参数相关?如果是这样,为什么从
$('#target option').each(function(i)
中删除参数不会破坏任何东西?i
参数在$.each(keys, function(i, key)
中做什么?我只看到函数中使用的键。从此处删除i
确实会破坏程序。
-
不,它们是分开的,就像这里的
name
是分开的一样:function sayHi(name) { alert("Hi, " + name); } function openWindow(url, name) { window.open(url, name); }
它们是单独的函数,每个函数仅在自己的范围内定义参数。
-
删除
i
不会破坏任何东西,因为它从未被使用过。JavaScript 不会检查你传递了多少参数。如果传递的次数超过函数接受的次数,则会忽略额外的内容;如果您传递较少,则缺少的将被赋予值undefined
. -
$.each
回调中的第一个参数将接收项的索引(或键((0, 1, 2, ...(;第二个参数是值。(这有点令人困惑,因为这里的值称为"键"。如果删除第一个参数,则第二个参数将成为第一个参数,并且keys
变量现在将获得值 0、1、2...。之前被输送到i
中。
i 是指 .each 调用的当前迭代。当 var 被定义为函数的参数时...如果该函数,它仅存在于作用域中。i 是可选的,只有当您想知道您正在使用什么迭代时才需要在那里。
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 使用promise和mongoose对文档进行排序
- Selectize.js:如何对整数值的选项进行排序
- Javascript排序的图像弹出窗口..可以't单独弹出
- 如何通过引用var Using DataTables来进行分页或排序
- jquery.each(第2行)添加背景色
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- AngularJs对所有页面中的所有记录进行排序
- 如何使用jQuery each分离字符串中的元素
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 按从高到低对多个int变量进行排序
- jQuery UI可排序-多连接列表拖动
- Javascript排序字符串或数字
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- sort而不是排序javascript
- 通过从节点父级获取所有子级对节点进行排序(获取子级数组)
- Javascript:在_.each循环中对解析的JSON进行排序
- ractive js :与模板中键部分关联的嵌套对象列表的直接 DOM 插入排序/排序 #each 顺序
- 尝试理解对选择选项进行排序的 .each() 回调
- 对JSON数组进行排序,并使用$.each进行回显