如何合并数组中的值或索引

how to merge the value or index in array

如何合并值或合并索引,
例如我有:

var input = [
            ["0001", "Roman Alamsyah", "Bandar Lampung", "21/05/1989", "Membaca"],
            ["0002", "Dika Sembiring", "Medan", "10/10/1992", "Bermain Gitar"],      
        ];

我希望我的数组是

var output = [
            ["0001", "Roman Alamsyah", "Bandar Lampung 21/05/1989", "Membaca"],
            ["0002", "Dika Sembiring", "Medan 10/10/1992", "Bermain Gitar"]
        ];

谢谢

不确定这是否是您想要的,但它会产生问题中要求的输出:

[1,2,3,4].reduce(
    (accumulator, currentValue, currentIndex, array) => {
        (currentIndex !== 1 && currentIndex !== 2)
            ? accumulator.push(currentValue)
            : currentIndex === 1
                ? accumulator.push(
                    Number.parseInt(
                        array[currentIndex].toString()
                        + array[currentIndex + 1].toString()
                    )
                )
                : undefined ;
        return accumulator ;
    }
    , []
)

参见:Array.prototype.reduce() MDN

您可以使用 destructuring assignment :

[a,b,c,d] = [1,2,3,4];
var mergedArr = [a,+(""+b+c),d];

console.log(mergedArr);

通过这种方式,您可以将每个数组元素视为特定索引处的变量。之后,您可以根据需要合并每个变量。

必须指出的是,该运算符尚未被所有浏览器支持。


更新问题的补充:

您还可以实现一个函数,在给定的起始索引和结束索引处递归合并数组元素。通过这种恢复方式,您也可以合并子数组。

var input = [
  ['0001',
  'Roman Alamsyah',
  'Bandar Lampung',
  '21/05/1989',
  'Membaca'],
  [
    '0002',
    'Dika Sembiring',
    'Medan',
    '10/10/1992',
    'Bermain Gitar'
  ],
];
  
var input2 = [
  [
    ['0001',
     'Roman Alamsyah',
     'Bandar Lampung',
     '21/05/1989',
     'Membaca']
  ],
  [
  '0002',
  'Dika Sembiring',
  'Medan',
  '10/10/1992',
  'Bermain Gitar'
  ],
];

function mergeValues(arr, start, end) {
  if (arr.__proto__.constructor === Array && arr[0].__proto__.constructor !== Array) {
    var mergedValues = [];
    var result = [];
    arr.forEach(function (value, index) {
      if (index < start) result.push(value);
       else if (index > end) {
        if (mergedValues.length) {
          result.push(mergedValues.join(' '));
          mergedValues = [];
        }
        result.push(value);
      } 
      else mergedValues.push(value);
    });
    return result;
  } 
  else {
    return arr.map(function (subarr) {
      return mergeValues(subarr, start, end);
    });
  }
}

console.log("input: ",mergeValues(input, 2, 3));
console.log("input2: ",mergeValues(input2, 2, 3));

希望这对您有所帮助。

您可以指定索引 joinAt,其中必须连接接下来的两个元素,然后用拼接部分的新字符串拼接数组。

var array = [
        ["0001", "Roman Alamsyah", "Bandar Lampung", "21/05/1989", "Membaca"],
        ["0002", "Dika Sembiring", "Medan", "10/10/1992", "Bermain Gitar"],
    ],
    joinAt = 2;

array.forEach(function (a) {
    a.splice(joinAt, 0, a.splice(joinAt, 2).join(' '));
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }