我有两个数组:
array1 = ['bob', 's', 'paul'];
array2 = ['bob', 'sue', 'paul'];
我想将数组1中的首字母's'转换为数组2中相应的名称'sue'。
同时,我希望这也可以实现反向转换,即:
array1 = ['bob', 'sue', 'paul'];
array2 = ['bob', 's', 'paul'];
这样在array1中的'sue'将会转换为与array2匹配的's'。
到目前为止,我有以下函数:
function findName(arr1, arr2) {
for (let initial of arr1) {
if (initial.length === 1) {
return arr2.findIndex(name => name[0] === initial) != -1
}
}
}
如果初始值匹配,则该函数将返回 true,但我需要该函数实际创建 array3,以便它将转换初始值。
换句话说:
array1 = ['bob', 's', 'paul'];
array2 = ['bob', 'sue', 'paul'];
// array3 = ['bob', 'sue', 'paul']; //array 3 maintains the same sequence order as array 1
array1 = ['b', 'sue', 'paul'];
array2 = ['s', 'paul', 'bob'];
// array3 = ['bob', 's', 'paul']; //array 3 maintains the same sequence order as array 1
array1 = ['b', 'sue', 'paul', 'robert'];
array2 = ['s', 'paul', 'bob'];
// array3 = ['bob', 's', 'paul', 'robert']; //array 3 maintains the same sequence order as array 1
array1 = ['b', 'sue', 'paul'];
array2 = ['s', 'paul', 'bob', 'robert'];
// array3 = ['bob', 's', 'paul']; //array 3 maintains the same sequence order as array 1
在存在多个相同的首字母时,只需转换第一个字母并保留第二个字母:
array1 = ['b', 'b', 'sue', 'paul'];
array2 = ['s', 'paul', 'bob', 'robert'];
// array3 = ['bob', 'b', 's', 'paul']; //array 3 maintains the same sequence order as array 1
除非缩写找到匹配的集合,否则按顺序转换它们:
array1 = ['b', 'b', 'sue', 'paul'];
array2 = ['s', 'paul', 'bob', 'robert', 'bill'];
// array3 = ['bob', 'bill', 's', 'paul']; //array 3 maintains the same sequence order as array 1
我需要能够在此函数外部使用array3。
return arr1.map(…)
吗? - Bergi