【问题标题】:Create an array alternating between 2 different values创建一个在 2 个不同值之间交替的数组
【发布时间】:2020-03-18 05:37:20
【问题描述】:

我正在尝试创建一个在具有预定长度的 2 个不同值之间交替的数组。

例子:

conts value1 = 1;
const value2 = 2; 
cont length = 6; 

//desired output
const array1 = [1, 2, 1, 2, 1, 2];

【问题讨论】:

  • 首先,您的代码“const”似乎有错误。其次,您能否将结果值和预期值相加,看看您要达到什么目标?

标签: javascript arrays sorting


【解决方案1】:

您可以使用具有所需长度的Array.frommap 创建具有所需值的数组:

const value1 = 1;
const value2 = 2; 
const length = 6; 

const result = Array.from({ length }).map((e, ndx) => ndx % 2 ? value2 : value1); 

console.log(result);

【讨论】:

    【解决方案2】:

    尝试:

    var repeated = new Array(3).fill([1, 2]).flat();
    

    或更笼统地说:

    function repeat(n, value){
        return new Array(n).fill(value).flat();
    }
    
    result = repeat(3, [1, 2]);
    

    致谢:https://stackoverflow.com/a/54935305/4628597

    【讨论】:

      【解决方案3】:

      一个简单的初学者解决方案是这样的:

      function createArray(value1, value2, length){
          var array = new Array()
          for(var i=0; i<length;i++){ 
                if(i%2 == 0){
                 array.push(value1);
                }else{
                 array.push(value2);
                }
          return array;
          }
      }
      

      【讨论】:

      • 谢谢,我会详细分析一下,看看你是怎么做到的,谢谢!
      【解决方案4】:

      您可以按所需顺序获取一个值数组,并在值数组的索引上使用闭包,通过取余数与值数组的长度进行调整。

      const values = [1, 2],
            length = 6,
            result = Array.from({ length }, (i => _ => values[i++ % values.length])(0)); 
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 2015-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-23
        • 2022-11-11
        • 2020-01-21
        • 1970-01-01
        相关资源
        最近更新 更多