如何将计数器添加到相同元素的列表中

问题描述 投票:0回答:2

大家好,我正在尝试创建以下函数:如果数组中的下一个元素大于前一个元素,则在计数器中添加 1。然而我的问题是当我有相同的元素时。我想添加一些内容来检查所有元素是否相同,添加 1 来计数器每个相同的元素。所以在关于 [4,4,4,4,4] 的例子中应该输出 5,因为有 5 个元素是相同的

function tower(arr) {
  //lave en counter for antallet af towers
  counter = 0
  counteridentical = 0
  //loop igennem listen
  for (let i = 0; i < arr.length; i++) {
    //lave if statement og tjekke hvis næste er større, skal der countes +1
    if (arr[i]  < arr[(i + 1) % arr.length]) {
      counter++
    }
  }
  return counter
}
console.log(tower([4, 3, 3, 2, 1, 2, 2, 1, 1, 3])) //expected output 3
console.log(tower([
  [4, 4, 4, 4, 4]
])) //expected output 5

javascript arrays sorting equality
2个回答
0
投票

你的第二个数组是嵌套的

这是我的建议

function tower(arr) {
  if (arr.every(val => val === arr[0])) return arr.length
  return arr.filter((val,i) => i === 0 || i > 0 && val > arr[i-1]).length 
  
}
console.log(tower([4, 3, 3, 2, 1, 2, 2, 1, 1, 3])) //expected output 3
console.log(tower([ 4, 4, 4, 4, 4 ])) //expected output 5


0
投票
function tower(arr) {
  counter = 0
  counteridentical = 0
  for (let i = 1; i <= arr.length; i++) {
    if (arr[i]  >= arr[(i - 1)]) {
      counter++
    }
  }
  return counter
}

逻辑如下:

  1. 从第二项迭代到最后一项。即, for(令 i = 1; i <= arr.length; i++)
  2. 在每个项目上,检查它是否大于或等于前一个元素
  3. 如果步骤 2 返回 true,则增加计数器
© www.soinside.com 2019 - 2024. All rights reserved.