繁体   English   中英

如何检查数组中的每个元素以查看它是否存在于另一个数组中,并将第一个数组中的元素替换为其他元素?

[英]How do I check every element in an array to see if its present in another array, and to replace the element in first array to something else?

我想做一个 function 里面有两个 arrays 。 第一个数组包含数字,第二个包含字母和数字。 我想比较它们,如果第二个数组中的某个元素也在第一个数组上,那么将第一个数组的元素替换为其他元素。 这是我编写的示例数组:

const array1 = ['1', '2', '3', '4', '5']
const array2 = ['a', 'b' '3', '2', 'c']

所以第二个数组和第一个数组都有数字 3 和 2。这是我尝试比较值的代码:

const arraycompare = array1.some(x => array2.includes(x))
const finalarray = array1.replace(arraycompare, `${arraycompare} - also found in array2`
console.log(finalarray)

但是,这不起作用,因为 arraycompare 返回 boolean 而不是它比较的元素的值,发现它们同时存在于 arrays 中。 那么我应该如何解决这个问题并使其使 arraycompare 和 finalarray 工作?

使用Array.map

const array1 = ['1', '2', '3', '4', '5']
const array2 = ['a', 'b' ,'3', '2', 'c']

let n = array1.map(e => array2.includes(e)?'replacement':e)

console.log(n)

您不一定需要创建中间数组。 您可以只#map array1 :对于每个元素,看看它是否也在array2中,如果是,则返回您的字符串,否则返回值。 我为此使用三元运算符

array2.includes(a1) ? `${a1} - also found in array2` : a1

这是代码:

 const array1 = ['1', '2', '3', '4', '5'] const array2 = ['a', 'b', '3', '2', 'c'] console.log( array1.map(a1 => array2.includes(a1)? `${a1} - also found in array2`: a1) )

这可能不是最干净的方法,但我认为它很有价值,因此您可以看到其背后的逻辑。 首先,您应该遍历两个 arrays 比较第一个中的每个元素和第二个中的每个元素。 在循环第二个数组之前将布尔值设置为 false,匹配时将其设置为 true。 当第二个数组完成迭代检查 bool 是否已更改(匹配的元素)。 如果您知道第一个数组中的元素在第二个数组中,那么您可以将该元素设置为您想要的任何元素。

 let array1 = ['1', '2', '3', '4', '5'] const array2 = ['a', 'b', '3', '2', 'c'] array1.forEach((a1Element, index) =>{ let found = false; array2.forEach((a2Element) => { if(a1Element === a2Element){ found = true; } }) if(found){ array1[index] = `${a1Element} also found in array2`; } }) console.log(array1)

const array1 = ['1', '2', '3', '4', '5']
const array2 = ['a', 'b', '3', '2', 'c']


array1.forEach((hash => (a, i, aa) => {
  var exists = array2.find(f => f === a);
  if (exists) {
    aa[i] = "replaced " + exists
  }
})(new Set(array1)));

console.log(array1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM