我想做的是讓閉包回傳相同的值n次數。
let value = getCurrentValue([0, 315, 270, 225, 180, 135, 90], 3);
然后我應該得到:
value() // returns 0
value() // returns 0
value() // returns 0
value() // returns 315
value() // returns 315
value() // returns 315
value() // returns 270
value() // returns 270
value() // returns 270
這是我試過的!
function getCurrentValue(values, num) {
let index = -1;
let l = values.length;
function increment() {
index;
if (index < l) {
return values[index]
} else {
index = -1;
index;
return values[index]
}
}
if (num) {
for (var i = 0; i < num; i ){
return increment
}
}
return increment;
}
任何幫助,將不勝感激!
uj5u.com熱心網友回復:
這是我的generator解決方案和關閉解決方案
// generator solution
function* getCurrentValueIter(iter, times) {
for (let i = 0; i < iter.length * times; i ) {
const cur = Math.floor(i / times);
yield iter[cur]
}
}
console.log('generate')
const valueIter = getCurrentValueIter([0, 1], 2)
for (let value of valueIter) {
console.log(value)
}
// you can also use valueIter manually
// console.log(valueIter.next().value)
// closure solution
function getCurrentValue(iter, times) {
let i = 0
function value() {
while (i < iter.length * times) {
const cur = Math.floor(i / times);
i = 1
return iter[cur]
}
}
return value
}
const value = getCurrentValue([0, 1], 2)
console.log('closure', value())
console.log(value())
console.log(value())
console.log(value())
uj5u.com熱心網友回復:
只需使用迭代器函式。
function* getCurrentValue(arr, count) {
for (let item of arr) {
for (let j = 0; j < count; j ) {
yield item;
}
}
}
for (let value of getCurrentValue([0, 315, 270, 225, 180, 135, 90], 3))
{
console.log(value);
}
uj5u.com熱心網友回復:
在 Javascript 中:
const values = [0, 315, 270, 225, 180, 135, 90];
const rNum = 3;
const getCurrentValue = (values, num) => {
if (num <= 0) {
return console.log("Repeater is invalid");
} else {
values.map((number) => {
let repeatingCount = 0;
while (repeatingCount != num) {
console.log(number);
repeatingCount ;
}
})
}
}
getCurrentValue(values, rNum);
uj5u.com熱心網友回復:
const value = getCurrentValue([0, 315, 270, 225, 180, 135, 90], 3);
function getCurrentValue(arr = [], n = 0) {
// Return if the array is empty or `n` is 0
if (!arr.length || !n) return;
let index = 0;
let count = 0;
return function () {
// Have we reached the end of the array?
if (index < arr.length) {
// No? Check to see if our count is less than `n`
// increment it if it is, and log the number
if (count < n) {
count;
console.log(arr[index]);
// Otherwise increase the array index
// and set `count` to zero
} else {
index;
count = 0;
}
}
}
}
value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value(),value();
uj5u.com熱心網友回復:
如果我理解得很好,這就是你想要的
let res = [];
function getCurrentValue(arr, x) {
res = [];
for (val of arr) {
for (let i = 0; i < x; i ) {
res.push(val);
}
}
}
getCurrentValue([0, 42, 4], 3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485891.html
標籤:javascript 功能 for循环 关闭
