如何合并数组中的值或索引
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; }
如何合并值或合并索引,
例如我有:
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; }