javascript - 查找和删除数组中的匹配值和对应值
问题描述
这是我在 JavaScript 中遇到的问题的示例:
第一个数组 [1, 2, 3, 4, 5, 6, 7]
第二个数组 [7, 8, 9, 4, 2, 5, 7]
在这种情况下,我需要能够从两个数组中找到并消除“4”和“7”,同时消除两者。这是基于它们的位置和匹配值。
除了消除匹配值之外,我找不到任何东西。但是,在这种情况下,这些值必须位于相同的位置并且也必须匹配。
到目前为止,我已经尝试过:
function findCommonElements3(array1, array2) {
return arr1.some(item => arr2.includes(item))
}
看起来它只寻找匹配的元素,而我需要找到匹配的对应元素然后删除它们。
解决方案
正如评论中提到的,您可以使用splice方法在 JavaScript 中删除一个或多个数组元素。首先,我将存储我应该删除循环数组的元素的索引,如下所示:
const array1 = [1, 2, 3, 4, 5, 6, 7];
const array2 = [7, 8, 9, 4, 2, 5, 7];
//Indexes of same elements
var sameIndexes = [];
function findSameIndexes(element, index) {
if (array1[index] == array2[index]) {
sameIndexes.push(index);
}
}
array1.forEach(findSameIndexes);
调用 console.log(sameIndexes) 应该给出这个结果:
Array [3, 6]
问题是,如果您再次循环数组并按该顺序删除元素,则索引将不再对应于元素。
例如,如果您删除第 3 个元素,数字 7 将不再位于索引 6,为了解决此问题,我将使用reverse方法,这样您就不会丢失索引
// A simple function to remove the elements in both arrays
function removeElements(index) {
array1.splice(index,1);
array2.splice(index,1);
}
sameIndexes.reverse().forEach(removeElements);
最终结果将是
Array [1, 2, 3, 5, 6]
Array [7, 8, 9, 2, 5]
希望这是您正在寻找的内容,当然还有更好的方法来写下来,但这也许会帮助您找到解决方案。
推荐阅读
- python - Pycharm 不会将我的函数返回到控制台
- javascript - 尝试使用一些 trig 和 JavaScript 画布重新创建大逃杀红区功能
- entity-framework - ASP.NET core 2.1 数据库迁移
- excel - 如何找到等于给定值的对应元素的最小数字总和?
- reactjs - 将 gql 函数转换为插入变量的字符串
- vue.js - Vuex如何跟踪索引并将其传递给组件?
- vue.js - 带有 Vuex 的 vue-table-2 - 无法更改计数属性
- perl - 在 Perl 中读取文件会中断编码
- react-native - React Native Linking - 如何正确获取网址?
- automation - @DataProvider + @Factory + 哈希图