如何合并值或合并索引,
例如,我有:
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"]
];
感谢
答案 0 :(得分:1)
您可以使用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));
希望这会有所帮助。
答案 1 :(得分:0)
不确定这是否是您想要的,但它会产生问题所要求的输出:
[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 ;
}
, []
)
请参阅:MDN上的Array.prototype.reduce()
答案 2 :(得分:0)
您可以指定索引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; }