编写一个接受以下array的函数SquareWave(Arr):[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],并开始用zeroes逐个替换数字,直到它达到multiple of 5.从这一点开始,开始用1替换数字,直到你达到5的下一个倍数.

然后,从这一点开始,开始替换为0s again,然后替换为1s again,依此类推,直到到达数组的末尾. 一百零二

let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];

function squareWave(arr) {
   let zeros = true;
   let output = [];
   for (let i = 0; i < arr.length; i++) {
       if (arr[i] % 5) {
          arr[i] = 0;
       } else if (arr[i] !== 5) {
           arr[i] = 1;
       }
   }
   console.log(arr)
}

Output should be=[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1]

推荐答案

您没有跟踪当前条目应该是0还是1.此外,您没有使用变量zerosoutput

您可以在变量zeros中保留0或1,并在5的mod等于零时反转值,而不是布尔值.

if (arr[i] % 5 === 0) {

然后,对于每个迭代,写入值zeros

let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];

function squareWave(arr) {
  let zeros = 0;
  let output = [];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 5 === 0) {
      zeros = 1 - zeros
    }
    output[i] = zeros;
  }
  return output;
}

console.log(squareWave(input));

或者简而言之:

let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];
let res = input.map(i => Math.abs(Math.floor(i / 5) % 2))
console.log(res)

Javascript相关问答推荐

IMDB使用 puppeteer 加载更多按钮(nodejs)

从mat—country—select获取整个Country数组

如何使覆盖div与可水平滚动的父div相关?

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

在拖放时阻止文件打开

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

闭包是将值复制到内存的另一个位置吗?

如何创建返回不带`new`关键字的实例的类

如何将zoom 变换应用到我的d3力有向图?

Socket.IO在刷新页面时执行函数两次

FireBase FiRestore安全规则-嵌套对象的MapDiff

如何使用[ModelJSON,ArrayBuffer]调用tf.loadGraphModelSync

如果对象中的字段等于某个值,则从数组列表中删除对象

未找到用于 Select 器的元素:in( puppeteer 师错误)

如何在Reaction中设置缺省值, Select 下拉列表,动态追加剩余值?

使用onClick单击子元素时,使用交点观察器的关键帧动画意外运行

Playwright:ReferenceError:browserContext未定义

如何在通过JavaScript添加图像后将其删除?

类型脚本类型声明未按预期工作