我有两个数组:
array1 = ['bob', 's', 'paul'];
array2 = ['bob', 'sue', 'paul'];
我想将 array1: 's' 中的首字母转换为 array2: '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。
最佳答案
转换一个数组中的首字母以匹配第二个数组中的值
let array1 = ['b', 'b', 'sue', 'paul'];
let array2 = ['s', 'paul', 'bob', 'robert', 'bill'];
let array3 = [];
array1.forEach(function(element) {
let item =array2.find((el) => el.startsWith(element[0]));
array3.push(item);
var index = array2.indexOf(item);
if (index > -1) {
array2.splice(index, 1);
}
});
console.log(array3);
关于javascript - 如何转换一个数组中的首字母以匹配第二个数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55168831/