当前位置: 首页 > 编程笔记 >

等效于JavaScript中Ruby的每个缺点

闻人嘉木
2023-03-14
本文向大家介绍等效于JavaScript中Ruby的每个缺点,包括了等效于JavaScript中Ruby的每个缺点的使用技巧和注意事项,需要的朋友参考一下

each_cons()-Ruby

each_cons()枚举的方法是在Ruby一个内置的方法,该方法为连续的N个元素迭代从每个元素每次开始。如果没有给出块,则返回枚举数。

等效于each_cons()的JS

假设我们有一个Number文本数组(在这种情况下,JS相当于Ruby的enumerable),那么each_cons函数应该是一个Array函数,该函数对数组的每个元素执行并接受数字N(N <=数组长度)作为唯一的论点。并返回一个数组,数组的大小为N,每个子数组都从所有元素开始。

这样的一个例子会使事情变得更清楚。

假设我们有一个像这样的数组-

const arr = [1, 2, 3, 4, 5];
console.log(arr.eachCons(2));

这个对eachCons的调用的作用是,它形成一个数组数组,每个数组有2个元素,像这样-

[[1, 2], [2, 3], [3, 4], [4, 5]]

注意,直到我们可以为原始数组的每个元素创建子数组。

如果N的值是3而不是2,则结果将看起来像是-

[[1, 2, 3], [2, 3, 4], [3, 4, 5]]

同样,为数组的每个元素创建子数组,直到数组中有足够的元素。

方法

我们将使用滑动窗口算法来解决此问题。

尽管我们可以使用现代的ES6函数在两行中解决此问题,但与后者相比,前一种方法非常有效。

首先,我们将利用while循环来创建从0到N索引的初始窗口。然后。我们将使用一个for循环,该循环将在窗口末尾仍小于原始数组的长度时运行。

此循环检查窗口的稳定性(即,窗口的长度等于N)。如果窗口是稳定的,则将窗口(该子数组插入结果数组),将其向右滑动单位距离并将其折叠(即,start = end)。如果窗口不稳定,我们将继续向其中添加元素。

这种方法的代码是-

示例

const arr = [1, 2, 3, 4, 5];
const eachCons = function(num){
   let res = [], temp = [];
   let start = 0, end = 0;
   while(end < num){
      temp.push(this[end++]);
   };
   for(; end <= this.length ;){
      if(temp.length === num){
         res.push(temp);
         start++;
         end = start;
         temp = [];
      }
      temp[end-start] = this[end];
      end++;
   }
   return res;
};
Array.prototype.eachCons = eachCons;
console.log([1, 2, 3, 4, 5].eachCons(1));
console.log([1, 2, 3, 4, 5].eachCons(2));
console.log([1, 2, 3, 4, 5].eachCons(3));
console.log([1, 2, 3, 4, 5].eachCons(4));

输出结果

控制台中的输出将为-

[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ] ]
[ [ 1, 2 ], [ 2, 3 ], [ 3, 4 ], [ 4, 5 ] ]
[ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 3, 4, 5 ] ]
[ [ 1, 2, 3, 4 ], [ 2, 3, 4, 5 ] ]
 类似资料:
  • 问题内容: 该表示法是: 实际上不哈希对象;它实际上只是转换为字符串(通过它是一个对象,还是其他各种原始类型的内置转换),然后在“ ”中查找该字符串,而不对其进行哈希处理。也不会检查对象是否相等-如果两个不同的对象具有相同的字符串转换,则它们将彼此覆盖。 鉴于此-在JavaScript中是否有任何有效的hashmap实现?(例如,第二个Google结果产生的实现对任何操作都是O(n)。其他各种结果

  • 问题内容: 当我从解释器编写Python代码时,我可以键入要在当前作用域中定义的名称列表。当我使用交互式控制台(如Firebug,Chrome控制台等)从浏览器开发Javascript代码时,如何以编程方式实现具有相同的信息? 问题答案: 在ChatZilla的代码中,有几个功能可以执行此操作,您必须正确检查许可证以查看是否可以将其撕下来并在任何地方使用。 相关功能可以在 http://hg.mo

  • 问题内容: 好的,这可能只是一个愚蠢的问题,尽管我敢肯定会有很多其他人不时问同样的问题。我,我只是想以任何一种方式100%确定它。有了jQuery,我们都知道精彩之处 但是,假设我要运行一个用标准JavaScript编写且没有库支持的函数,并且我想在页面准备就绪后立即启动一个函数。解决这个问题的正确方法是什么? 我知道我可以做: …或者我可以使用标记: …或者我什至可以尝试在页面底部输入所有内容,

  • 问题内容: 什么是Java的JavaScript等价物 我需要获取一个数组或所有匹配项的列表 例: 给 http://www.w3schools.com/jsref/jsref_match.asp 问题答案: 检查正则表达式教程 您的代码应类似于以下内容:

  • 问题内容: 在Ruby on Rails 2.3.5中是否有等同于PHP的urlencode的代码?(它对要在URL的查询部分中使用的字符串进行编码)我用Google搜索了它,但所有答案似乎都可以追溯到2006年之前,而且似乎是日期。 这就是我发现的。在视图中调用似乎有点异常。 有等效的辅助功能吗? 谢谢! 问题答案: 我相信您正在寻找帮助方法: 我似乎找不到该方法的文档,但是如果我在不久的将来找

  • 问题内容: Java 在JavaScript中相当于什么? 问题答案: 简单的答案是没有这样的功能。 您拥有的最接近的东西是: 请注意,您 尤其 不想等待(例如在旋转循环中),因为您的浏览器几乎可以肯定会在单线程环境中执行JavaScript。