我有3个阵列
array1 = [a,b,c,d,e,f]
array2 = [a,b,d,f]
array3 = [g,h]
我怎么能弄清楚array2中的哪个位置与array1不匹配,然后从array3插入一个元素?
所以输出看起来像
array4 = [a,b,g,d,h,f]
var EnglishArray = [<p>,This is a longer description. This will describe the item in greater detail.,</p>,<span please no translated Large donkey>,cat,</span>,<div>,test,<large>,<idk>,•,Hello worlds,<end?>]
var HTMLTags = [<p>,</p>,<span please no translated Large donkey>,</span>,<div>,<large>,<idk>,•,<end?>]
var translations = [Esta es una descripción más larga. Esto describe el tema con mayor detalle.,gato,prueba,Hola mundos]
function newString(EnglishArray, HTMLTags, translations){
var array4 = EnglishArray;
var j = 0;
for (var i = 0; i < EnglishArray.length; i++) {
if(HTMLTags[i] != EnglishArray[i]){
array4.splice(i, 1, translations[j]);
j++;
i++;
}
}
newString = array4.join('');
return newString;
}
它给我的输出是
<p>Esta es una descripción más larga. Esto describe el tema con mayor detalle.</p>gatocatprueba<div>Hola mundos<large>•<end?>
代替
<p>Esta es una descripción más larga. Esto describe el tema con mayor detalle.</p><span please no translated Large donkey>gato</span><div>prueba<large><idk>•Hola mundos<end?>
当我在很小的范围内尝试这个时,它工作正常。但似乎标签越多,翻译就会出现更多错误。在它变得太长之后,它将开始用英语重复最后几个单词。
您可以检查该值是否包含array2
,如果不包含array3
的元素。
var array1 = ['a', 'b', 'c', 'd', 'e', 'f'],
array2 = ['a', 'b', 'd', 'f'],
array3 = ['g', 'h'],
result = array1.map(v => array2.includes(v) ? v : array3.shift());
console.log(result);
没有map
和includes
var array1 = ['a', 'b', 'c', 'd', 'e', 'f'],
array2 = ['a', 'b', 'd', 'f'],
array3 = ['g', 'h'],
result = [],
i,
l = array1.length;
for (i = 0; i < l; i++) {
result.push(array2.indexOf(array1[i]) === -1 ? array3.shift() : array1[i]);
}
console.log(result);
这应该可行,但它会在进程中销毁array2和array3,因此您可能想要复制(array2.slice()
创建副本,而简单赋值不会)。
const array1 = ['a','b','c','d','e','f']
const array2 = ['a','b','d','f']
const array3 = ['g','h']
console.log(array1.map(x => array2[0] === x ? array2.shift() : array3.shift()))
其他解决方案,对人们更具可读性。
array1 = ["a","b","c","d","e","f"]
array2 = ["a","b","d","f"]
array3 = ["g","h"]
j=0;
for (i=0 ; i < array1.length ;i++){
if (array2[i]!==array1[i])
{
array2.splice(i,0, array3[j]);
j++;
}
}
console.log(array2);`
var array1 = ['a','b','c','d','e','f']
var array2 = ['a','b','d','f']
var array3 = ['g','h']
var array4 = array1.concat(array2,array3);
var set = new Set(array4);
array4 = Array.from(set);