我无法弄清楚为什么我从这段代码中得到以下错误:
var xs = [1, 2, 3];
var ys = [];
_.each(xs, ys.unshift);
console.log(ys);
错误是:Uncaught TypeError: Array.prototype.unshift called on null or undefined
。
我使用的是underscore.js。我试过了
_.each(xs, _.bind(Array.prototype.unshift, xs));
但这导致了我根本没想到的东西:
[3, 2, Array[3], 2, 1, Array[3], 1, 0, Array[3]]
其中子数组实际上是我想要的:[1, 2, 3]
。
唯一有效的变体是:
_.each(xs, function (x) { ys.unshift(x); });
但是我想假装我正在使用一种函数式语言,只是将函数提供给each
......
请帮忙。我做错了什么?
答案 0 :(得分:1)
有趣。
这是因为$ var='2015-06-03_18-05-30'
$ echo $var | sed 's/\-\|\_//g'
$ echo $var | sed 's/-|_//g'
使用_.each
调用回调函数,该函数将此值绑定到数组:
value, key, arr
我不认为下划线有一个帮手,只有N个参数运行一个函数,无论你传递什么
所以,即使您正在寻找更清洁的版本,这也会有效:
_.each(xs, function (value, key, xs) {
ys.unshift(value, key, xs);
});
实现可能如下所示:
_.each(xs, function (value, key, xs) {
ys.unshift(value);
});