javascript - 如何在 JavaScript 中编写按顺序返回参数的函数?

标签 javascript function parameters arguments

如何实现一个函数,该函数以序列作为参数并返回一个项目列表,其中没有任何彼此相邻的具有相同值的元素,并保留元素的原始顺序?

例如:

1. uniqueInOrder('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
2. uniqueInOrder('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']
3. uniqueInOrder([1,2,2,3,3])       == [1,2,3]

最佳答案

spread operator允许您接受一系列参数。它将参数序列作为数组提供给函数,然后您可以对其进行操作以删除重复项。

function unique(...items) {
  console.log(items.length)
}

如果您坚持接受字符串或类似数组的对象作为参数,那么您可以使用集合来跟踪重复项。

function unique(input) {
  items = new Set()
  for (let item of input) {
     items.add(item)
  }
  return items
}

这些提示应该可以帮助您回答您的问题。对于完整的解决方案,您可能只需要使用 for 循环并手动检查:

function unique(input) {
    let output = []
    for (let i = 0; i < input.length; i++) {
        if (input[i] != output[output.length - 1] || i == 0) {
            output.push(input[i])
        }   
    }
    return output
}

> unique("11223332233")
["1", "2", "3", "2", "3"]

关于javascript - 如何在 JavaScript 中编写按顺序返回参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676678/

相关文章:

javascript - 动态调用类函数

function - 检查排列的 Haskell 函数

ios - swift |强制取消执行代码

python - 将所有构造函数参数作为实例属性添加到 PyCharm 中的类

javascript - EaselJS - 缩放图像上的平移中断

javascript - 如何动态注入(inject) JavaScript 函数?

javascript - 在 setTimeout 和函数内部调用函数

c# - 调用没有参数但使用本地参数的委托(delegate) C#

c# - 自动生成变量 *name* 以匹配您提供的参数?

javascript - HTML5 捕获和保存视频