gpt4 book ai didi

javascript - 相当于 JavaScript 中 Ruby 的 each_cons

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:28 25 4
gpt4 key购买 nike

很多语言都问过这个问题,但 javascript 却没有。

Ruby 有方法 Enumerable#each_cons看起来像这样:

puts (0..5).each_cons(2).to_a
# [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5]]
puts (0..5).each_cons(3).to_a
# [[1, 2, 3], [2, 3, 4], [3, 4, 5]]

我怎样才能在 javascript 中为 Array 使用类似的方法?

最佳答案

这是一个函数(ES6+):

// functional approach
const eachCons = (array, num) => {
return Array.from({ length: array.length - num + 1 },
(_, i) => array.slice(i, i + num))
}

// prototype overriding approach
Array.prototype.eachCons = function(num) {
return Array.from({ length: this.length - num + 1 },
(_, i) => this.slice(i, i + num))
}


const array = [0,1,2,3,4,5]
const log = data => console.log(JSON.stringify(data))

log(eachCons(array, 2))
log(eachCons(array, 3))

log(array.eachCons(2))
log(array.eachCons(3))

您必须猜测结果数组的长度 (n = length - num + 1),然后您可以利用 JavaScript 的 array.slice迭代 n 次以获取所需的 block 。

关于javascript - 相当于 JavaScript 中 Ruby 的 each_cons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com