【问题标题】:How can I order items in an array?如何订购数组中的项目?
【发布时间】:2019-09-27 00:21:11
【问题描述】:

因此,我正在尝试创建一个函数,该函数采用数组中的第一项并在其末尾添加 a1 以及数组的下一项。然后,第三项与第四项一起添加一个a2,依此类推。另外,我想多次执行此操作并使用函数参数orderNum 创建多个数组。我很难找出如何做到这一点,但我猜它与1 -1 1 -1 序列有关。无论如何,这是我的代码:

function orderArray (orderNum, array) {
   var orderNum_Array = [];

   for (var i = 0; i <= array.length; i++) {
      if (Math.pow(-1, i +1) < 0) {
         array[i] = orderNum_Array [i];

         orderNum_Array[i] = orderNum_Array[i].toString();

         orderNum_Array.concat("a" + i);
      }else if (Math.pow(-1, i +1) > 0) {
         array[i] = orderNum_Array [i + 2];

         orderNum_Array[i + 2] = orderNum_Array[i + 2].toString();

         orderNum_Array.concat("a" + (i + 2));
      }
   }
}

任何和所有的帮助都将不胜感激。提前致谢!

【问题讨论】:

  • 例如:[1, 2, 3, 4, 5, 6];我试图得到的结果是 [1a1, 2a1, 3a2, 4a2, 5a3, 6a3] 但任何这样的结果将不胜感激。我基本上想将数组中的项目配对。
  • 那么,你想从[10, 5, 7, 9, 50, 66, 8,20]这样的数组中得到['10a15', '7a29', '50a366', '8a420']这样的数组吗?
  • Math.pow(-1, i +1) &lt; 0 这是一种检查数字是否为奇数的新颖方法......无论如何,我认为如果您更改为一次循环两个元素,您的代码会更容易,即i += 2而不是i++,但你的要求对我来说有点不清楚。请举例说明输入和输出数组。
  • @Geshode 这是你得到的结果吗?谢谢你,现在我(至少部分地)知道如何改变我的功能。我想将数组中的数字配对:[1, 2, 3, 4] 给出结果 [1a1, 2a1, 3a2, 4a2]。
  • 你的函数中orderNum参数的意义何在?

标签: javascript arrays loops sorting


【解决方案1】:

您的代码无法正常工作,因为您超出了数组范围,很可能是由orderNum_Array[i + 2] 引起的。

但您可以使用Array.map() 以更简单的方式执行此操作。

function orderArray(array) {
   var num = 0;
   var orderNum_Array = array.map((item, index) => {
     if (index % 2 == 0) {
       num++;
     }
     return item + "a" + num;
   });
   
   return orderNum_Array;
}

console.log(orderArray([1,2,3,4,5,6]));

【讨论】:

    【解决方案2】:

    不清楚orderNum的目的是什么,但就在成对的索引处附加a1, a2而言,你可以使用Math.ceil来简洁:

    function orderArray(array) {
      return array.map((n, i) => `${n}a${Math.ceil((i + 1) / 2)}`)
    }
    
    console.log(orderArray([1, 2, 3, 4, 5, 6, 7]));

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多