根据键值组合数组项

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;
}