在 6 次迭代的步长中每三个项目更改一次

change every three items in a step of 6 iteration

本文关键字:项目 三个 一次 迭代      更新时间:2023-09-26

>我有一个项目数组(长度可能不同)。我需要以不同的方式更改每个前三个项目,然后是第四和第五,然后是第六个,然后重新开始。

例如:

var arr = [1,2,3,4,5,6,7,9,10];
var newArr = arr.map(function (value, index) {
    // indexes 1,2,3 value+1
    // indexes 4,5   value+2
    // index  6     value+3
    // indexes 7,8,9 value+1
    // indexes 10,11 value+2
    // starting over and over...
});
console.log(newArr);

谢谢!

您可以使用模数和一些条件来返回所需的内容

var arr = [1,2,3,4,5,6,7,9,10];
var newArr = arr.map(function (value, index) {
    var modulo =  (index % 6) + 1,
        added  = 1;
    
    if ( modulo === 4 || modulo === 5 ) added = 2;
    if ( modulo === 6 ) added = 3;
    
    return value + added;
});
document.body.innerHTML = '<pre>' + JSON.stringify(newArr, null, 4) + '</pre>';

打高尔夫球,只是为了好玩

var newArr = arr.map(function (v, i) {
    return v + ([3,4].indexOf(i%6) != -1 ? 2 : (i%6) === 5 ? 3 : 1);
});

我想你的意思是索引而不是值。如果是这种情况,那么这应该有效:

    var arr = [1, 2, 3, 4, 5, 6, 7, 9, 10];
    var newArr = arr.map(function(value, index) {
      var m = index % 6;
      if (m < 3) {
        return value + 1;
      }
      if (m < 5) {
        return value + 2;
      } else {
        return value + 3;
      }
    });
    alert(newArr);

var arr = [1,2,3,4,5,6,7,9,10];
func_123 = function( value, index ){
 console.log( 'stuff of first three ' + value + ' ' + index )};
func_45 = function( value, index ){
 console.log( 'stuff of four & five ' + value + ' ' + index )};
func_6 = function( value, index ){
 console.log( 'stuff of six ' + value + ' ' + index )};
var newArr = arr.map(function (value, index) {
[ func_123, func_123, func_123, func_45, func_45, func_6 ][ index % 6 ]( value, index )});