如何在 vanilla JS 中重写此 ramda.js 代码
How to rewrite this ramda.js code in vanilla JS
为了减小 JavaScript 大小,我正在从我继承的一些代码中删除 ramda。但是我坚持下面的内容,因为这条线真的让我感到困惑,因为它显然不对任何对象进行操作。
var iterate = R.addIndex(R.forEach);
相关代码如下所示:
var lis = $(el).find("ul.navbar-nav:not(.navbar-right) > li:not(.nav-more)");
var iterate = R.addIndex(R.forEach);
iterate(function(li) {
// Other code
}, lis);
如何用 vanilla JS 编写它?
当 R.addIndex()
is applied to R.forEach()
时,它创建了一个简单地迭代项目的函数,并为每个项目分配一个从零开始的索引:
var lis = ["a", "b", "c"];
var iterate = R.addIndex(R.forEach);
iterate(function(li, index) {
console.log(li, index)
}, lis);
<script src="//cdn.jsdelivr.net/npm/ramda@0.25.0/dist/ramda.min.js"></script>
使用 Array.from
with Array.forEach()
:
可以很容易地用香草 JavaScript 替换
var lis = ["a", "b", "c"];
var iterate = (fn, list) =>
Array.from(list)
.forEach(fn);
iterate(function(li, index) {
console.log(li, index);
}, lis);
如果Array.from()
不可用,需要ES5解决方案,则可以使用Array.prototype.slice()
转换为数组:
var lis = ["a", "b", "c"];
var iterate = function(fn, list) {
Array.prototype.slice.call(list)
.forEach(fn);
}
iterate(function(li, index) {
console.log(li, index);
}, lis);
最后,可以转换为适用于任何
的简单 for
循环
var lis = ["a", "b", "c"];
var iterate = function(fn, list) {
for (var i = 0; i < list.length; i++)
fn(list[i], i);
}
iterate(function(li, index) {
console.log(li, index);
}, lis);
使用 Array.from()
将对象转换为标准数组然后你 JS Array.forEach()
:
const iterate = (fn, o) => Array.from(o).forEach(fn)
iterate(function(li) {
// Other code
}, lis);
为了减小 JavaScript 大小,我正在从我继承的一些代码中删除 ramda。但是我坚持下面的内容,因为这条线真的让我感到困惑,因为它显然不对任何对象进行操作。
var iterate = R.addIndex(R.forEach);
相关代码如下所示:
var lis = $(el).find("ul.navbar-nav:not(.navbar-right) > li:not(.nav-more)");
var iterate = R.addIndex(R.forEach);
iterate(function(li) {
// Other code
}, lis);
如何用 vanilla JS 编写它?
当 R.addIndex()
is applied to R.forEach()
时,它创建了一个简单地迭代项目的函数,并为每个项目分配一个从零开始的索引:
var lis = ["a", "b", "c"];
var iterate = R.addIndex(R.forEach);
iterate(function(li, index) {
console.log(li, index)
}, lis);
<script src="//cdn.jsdelivr.net/npm/ramda@0.25.0/dist/ramda.min.js"></script>
使用 Array.from
with Array.forEach()
:
var lis = ["a", "b", "c"];
var iterate = (fn, list) =>
Array.from(list)
.forEach(fn);
iterate(function(li, index) {
console.log(li, index);
}, lis);
如果Array.from()
不可用,需要ES5解决方案,则可以使用Array.prototype.slice()
转换为数组:
var lis = ["a", "b", "c"];
var iterate = function(fn, list) {
Array.prototype.slice.call(list)
.forEach(fn);
}
iterate(function(li, index) {
console.log(li, index);
}, lis);
最后,可以转换为适用于任何
for
循环
var lis = ["a", "b", "c"];
var iterate = function(fn, list) {
for (var i = 0; i < list.length; i++)
fn(list[i], i);
}
iterate(function(li, index) {
console.log(li, index);
}, lis);
使用 Array.from()
将对象转换为标准数组然后你 JS Array.forEach()
:
const iterate = (fn, o) => Array.from(o).forEach(fn)
iterate(function(li) {
// Other code
}, lis);