在Javascript中,如何同时对两个seq的元素执行函数?
在Javascript中,在两个数组上并发迭代并在两个运行的元素上调用函数的最佳方式是什么?例如:在Javascript中,如何同时对两个seq的元素执行函数?,javascript,jquery,iteration,loops,underscore.js,Javascript,Jquery,Iteration,Loops,Underscore.js,在Javascript中,在两个数组上并发迭代并在两个运行的元素上调用函数的最佳方式是什么?例如: var a = [1, 2, 3]; var b = [11, 12, 13]; function my_func() { /* some custom function */} 代码应执行my_func 3次,如下所示: my_func(1,11); my_func(2,12); my_func(3,13); 如果不定义新函数,而是使用jQuery/下划线api,我如何实现这一点呢?例如,这
var a = [1, 2, 3];
var b = [11, 12, 13];
function my_func() { /* some custom function */}
代码应执行my_func 3次,如下所示:
my_func(1,11);
my_func(2,12);
my_func(3,13);
如果不定义新函数,而是使用jQuery/下划线api,我如何实现这一点呢?例如,这样做(使用下划线.js)
或:
-
例如,这种方式(使用下划线.js)
或:
-
jQuery版本:
$.each(a, function(index, value) {
my_func(value, b[index]);
});
jQuery版本:
$.each(a, function(index, value) {
my_func(value, b[index]);
});
好的,直接JavaScript非常擅长这样做。假设
a
数组和b
数组具有相同的长度,只需为循环使用标准
for (var i = 0; i < a.length; i++) {
my_func(a[i], b[i]);
}
如果要使用zip
操作,可以使用
作为Python的粉丝,最后一种方法对我来说特别好。但是老实说,如果您不打算做比调用my_func
更复杂的事情,那么您可以使用一个普通的for
循环。好吧,直接JavaScript非常擅长这样做。假设a
数组和b
数组具有相同的长度,只需为循环使用标准
for (var i = 0; i < a.length; i++) {
my_func(a[i], b[i]);
}
如果要使用zip
操作,可以使用
作为Python的粉丝,最后一种方法对我来说特别好。但是,老实说,如果您不打算做比调用my_func
更复杂的事情,那么您也可以对循环使用普通的。+1。我认为简单的for
循环是这里最好的方法。与基于库的解决方案一样易于编写和阅读(比jQuery$.each()
方法更容易),并且在运行时更高效…+1。我认为简单的for
循环是这里最好的方法。与基于库的解决方案一样易于编写和阅读(比jQuery$.each()
方法更容易),并且在运行时更高效……您是否意识到这[1 2 3]
和[11 12 13]
不是有效的javascript语法?如果要使元素成为数字数组,则元素之间需要逗号。谢谢@jfriend00。那些日子,我经常在javascript和clojure(我最喜欢的两种语言)之间切换。你知道这[1 2 3]
和[11 12 13]
不是有效的javascript语法吗?如果要使元素成为数字数组,则元素之间需要逗号。谢谢@jfriend00。那些日子,我经常在javascript和clojure(我最喜欢的两种语言)之间切换。我非常喜欢使用apply的代码。是否有其他jQuery/下划线方法可以克服应用的需要。我的意思是写这样的东西:。每个应用(.zip(a,b),我的函数);您好,我为此添加了一个示例函数,测试它是您的家庭作业:)我非常喜欢使用apply的代码。是否有其他jQuery/下划线方法可以克服应用的需要。我的意思是写这样的东西:。每个应用(.zip(a,b),我的函数);您好,我为此添加了一个示例函数,测试它是您的家庭作业:)
$.each(a, function(index, value) {
my_func(value, b[index]);
});
for (var i = 0; i < a.length; i++) {
my_func(a[i], b[i]);
}
$.each(a, function(i, aItem) { my_func(aItem, b[i]); });
$.zip(a, b).each(function() {
var aItem = this[0];
var bItem = this[1];
my_func(aItem, bItem);
});