根据键值组合数组项
Combine array items based on their key values
我想根据项目在其中的位置将两个不同的数组组合成一个数组。
我现在的数组:
var firstName = {'John','Joe','Kees'};
var lastName = {'Smith','Fisherman','Cow'};
我想要的结果:
var name = {'John Smith', 'Joe Fisherman', 'Kees Cow'};
我们可以使用Array#map
在两个给定数组之间进行映射。
在每次 map
迭代中,从第一个数组中取出 firstName f
及其对应的索引 i
并使用它通过组合 firstName 和 lastName 来获取全名来自索引 i
:
var firstName = ['John','Joe','Kees'];
var lastName = ['Smith','Fisherman','Cow'];
const combine = (firstName, lastName) => {
return firstName.map((f, i) => `${f} ${lastName[i] || ""}`);
}
console.log(combine(firstName, lastName));
Array.prototypr.map
有一个重载变体,它在迭代时获取每个值的值和索引。
您可以使用它将 firstName
的每个值与相应的 lastName
:
相匹配
var firstName = ['John','Joe','Kees'];
var lastName = ['Smith','Fisherman','Cow'];
var name = firstName.map((value, index) => value + ' ' + lastName[index]);
console.log(name);
我做了这个。但它不是内存或时间效率。您可以使用 for 循环制作更快的版本。
祝你好运。
let firstName = ['John','Joe','Kees'];
let lastName = ['Smith','Fisherman','Cow'];
const combiner = (firstArray, secondArray) => Array(Math.max(firstArray.length, secondArray.length)).fill('').map((_, i) => `${firstArray[i] || ''} ${secondArray[i] || ''}`.trim());
// 编辑:
使用 for 循环
const fasterCombiner = (fa, sa) => {
let result = [], length = fa.length > sa.length ? fa.length : sa.length;
for(let i = 0; i < length; i++ ) {
result.push(`${fa[i] || ''} ${sa[i] || ''}`.trim());
}
return result;
}
我想根据项目在其中的位置将两个不同的数组组合成一个数组。
我现在的数组:
var firstName = {'John','Joe','Kees'};
var lastName = {'Smith','Fisherman','Cow'};
我想要的结果:
var name = {'John Smith', 'Joe Fisherman', 'Kees Cow'};
我们可以使用Array#map
在两个给定数组之间进行映射。
在每次 map
迭代中,从第一个数组中取出 firstName f
及其对应的索引 i
并使用它通过组合 firstName 和 lastName 来获取全名来自索引 i
:
var firstName = ['John','Joe','Kees'];
var lastName = ['Smith','Fisherman','Cow'];
const combine = (firstName, lastName) => {
return firstName.map((f, i) => `${f} ${lastName[i] || ""}`);
}
console.log(combine(firstName, lastName));
Array.prototypr.map
有一个重载变体,它在迭代时获取每个值的值和索引。
您可以使用它将 firstName
的每个值与相应的 lastName
:
var firstName = ['John','Joe','Kees'];
var lastName = ['Smith','Fisherman','Cow'];
var name = firstName.map((value, index) => value + ' ' + lastName[index]);
console.log(name);
我做了这个。但它不是内存或时间效率。您可以使用 for 循环制作更快的版本。
祝你好运。
let firstName = ['John','Joe','Kees'];
let lastName = ['Smith','Fisherman','Cow'];
const combiner = (firstArray, secondArray) => Array(Math.max(firstArray.length, secondArray.length)).fill('').map((_, i) => `${firstArray[i] || ''} ${secondArray[i] || ''}`.trim());
// 编辑: 使用 for 循环
const fasterCombiner = (fa, sa) => {
let result = [], length = fa.length > sa.length ? fa.length : sa.length;
for(let i = 0; i < length; i++ ) {
result.push(`${fa[i] || ''} ${sa[i] || ''}`.trim());
}
return result;
}