我将变量设置为大约30个字符的字符串。我使用.split()将字符串转换为数组。现在我正在努力的部分是循环通过我刚刚创建的数组,递增一个计数器我已经设置为一个变量,变量递增任何数组迭代超过数组中的最后5个数字?
提前感谢任何可以帮助的人!
我在我的函数中尝试了这个…
let numsArr = [0, 1, 2, 3, ...... ,30]
let numOfInvalidElement = 0;
function() {
for(let i = 0; i < numsArr.length; i++) {
if (numsArr >= 20) {
return numofInvalidElement++
}
}
}
第一个解:
const numsArr = []
// create the numsArr array with a for loop.
for (let i=0; i<30; i++) numsArr.push(i + 1);
// us a for...of loop to iterate numsArr
let numOfInvalidElement = 0;
for(const num of numsArr) {
if (num >= 20) numOfInvalidElement++
}
// log the result
console.log(numOfInvalidElement)
// expected output: 11
其他解决方案:
const numsArr = []
// create the numsArr array with a for loop.
for (let i=0; i<30; i++) numsArr.push(i + 1);
// use a for loop to iterate numsArr:
let result1 = 0;
for (let i=0; i<numsArr.length; i++) if (numsArr[i] >= 20) result1++;
console.log(`for loop result: ${result1}`);
// use .forEach method to itrate numsArr:
let result2 = 0;
numsArr.forEach(num => (num >= 20) && result2++)
console.log(`.forEach method result: ${result2}`)
// use .filter method to itrate numsArr:
const result3 = numsArr.filter(num => num >= 20).length;
console.log(`.filter method result: ${result3}`)
// using .filter method with {} to itrate numsArr:
// when using array methods like .filter, .map, .some, etc. with {}, you do need to return a value.
const result4 = numsArr.filter(num => {
return num >= 20
}).length;
console.log(`.filter method result: ${result4}`)
您需要保持检查,以知道何时循环接近数组中的最后5个值。当你从for循环返回时在函数内部,它结束函数的执行。
let numsArr = [0, 1, 2, 3, ...... ,30]
let numOfInvalidElement = 0;
let isLastFiveNumbers = numsArr.length
function() {
const numsArrLength = numsArr.length
for(let i = 0; i < numsArrLength; i++) {
if (numsArrLength - i <= 5) {
numOfInvalidElement++
}
}
}
由于return
语句,您的函数提前终止。如文档所述:
return语句结束函数的执行,并指定返回给函数调用者的值。
按您的要求:
递增计数器我已经设置为一个变量,变量递增任何数组迭代过去的最后5个数字在数组?
不完全确定这意味着什么,也不确定您的条件numsArr >= 20
的目标是什么,因为numsArr
是一个数组。听起来好像你只想看最后5个元素,并且只在值超过某个值时才做一些事情,例如20:
for(let i = 0; i < numsArr.length; i++) {
// Only check last 5 and increment is exceed threshold value
if (i >= numsArray.length - 5 && numArr[i] >= 20) {
numofInvalidElement++; // Note the removed return
}
}
如果这是您想要的,那么函数式方法可能更简洁:
numOfInvalidElements = numsArr.slice(-5).filter(x => x >= 20).length;
参见切片和过滤器的文档。