有没有相当于Python的zip函数的javascript?也就是说,给定多个相等长度的数组会创建一对数组.
例如,如果我有三个如下所示的数组:
var array1 = [1, 2, 3];
var array2 = ['a','b','c'];
var array3 = [4, 5, 6];
Run Code Online (Sandbox Code Playgroud)
输出数组应该是:
var output array:[[1,'a',4], [2,'b',5], [3,'c',6]]
Run Code Online (Sandbox Code Playgroud) 在Python中将列表迭代为对(当前,下一个)的问题中,OP有兴趣将Python列表迭代为一系列current, next对.我有同样的问题,但我想用最干净的方式在JavaScript中完成,也许使用lodash.
使用简单的for循环很容易做到这一点,但它感觉不是很优雅.
for (var i = 0; i < arr.length - 1; i++) {
var currentElement = arr[i];
var nextElement = arr[i + 1];
}
Run Code Online (Sandbox Code Playgroud)
Lodash几乎可以做到这一点:
_.forEach(_.zip(arr, _.rest(arr)), function(tuple) {
var currentElement = tuple[0];
var nextElement = tuple[1];
})
Run Code Online (Sandbox Code Playgroud)
在最后一次迭代中,这nextElement将是一个微妙的问题undefined.
当然,理想的解决方案只是一个pairwise只在必要时循环的lodash功能.
_.pairwise(arr, function(current, next) {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
是否有任何现有的库已经这样做了?或者是否有另一种很好的方法在JavaScript中进行成对迭代我还没有尝试过?
澄清:如果arr = [1, 2, 3, 4],那么我的pairwise函数将迭代如下:[1, 2], …
给定输入str1为“ abc”,给定str2为“ def”,输出应为adbecf,给定str1 =“ ab”且str2 =“ def”的输出应为adbef
我的输出是:
merge('abc','def')“ adbecfNaN”
merge('ab','def')“ adbeundefinedf”
我一直在尝试过滤undefined和NAN,但是它不起作用。
这是我的代码:
function merge (str1, str2) {
var a = str1.split("").filter(Boolean);
var b = str2.split("");
var mergedString = '';
for(var i = 0; i <= a.length && i <= b.length; i++) {
mergedString += a[i] + b[i];
}
return mergedString;
}
Run Code Online (Sandbox Code Playgroud) 例如,如果我有两个看起来像这样的数组:
var array1 = ['a','b'];
var array2 = [1, 1];
Run Code Online (Sandbox Code Playgroud)
输出数组应该是:
var newArray = ['a:1', 'b:1']
Run Code Online (Sandbox Code Playgroud) 我有两个数组。
第一个数组包含日期
['2020-03-17,2020-03-19,2020-03-18,2020-03-12']
Run Code Online (Sandbox Code Playgroud)
第二个数组包含时间,该数组由两个小时的时间段组成。
['11:00', '13:00','15:00', '17:00','19:00', '21:00', '23:00']
Run Code Online (Sandbox Code Playgroud)
最后,我需要结果如下所示:
['2020-03-17,11:00,13:00','2020-03-19,15:00,17:00','2020-03-18,19:00,21:00']
Run Code Online (Sandbox Code Playgroud) 例如:
var array1 = ["one", "two", "three"];
var array2 = ["1", "2", "3"];
Run Code Online (Sandbox Code Playgroud)
如何将这些数组转换为var array = [["one", "1"], ["two", "2"], ["three", "3"]]?