简体   繁体   English

使用 JavaScript 中的二维 arrays 检测重复值

[英]Working with bidimensional arrays in JavaScript to detect repeated values

I have been working on an example that detects repetitions by letter-number with the following JavaScript code.我一直在研究一个使用以下 JavaScript 代码按字母编号检测重复的示例。

But it's not working.但它不起作用。 The idea is that it detects that the combination A-1 is repeated;这个想法是它检测到组合 A-1 是重复的; using a control matrix.使用控制矩阵。

This is the items JSON structure:这是 JSON 结构的项目:

{
letter: 'A',
number: '1',
},
{
letter: 'B',
number: '2',
},
{
letter: 'A',
number: '1',
},
{
letter: 'C',
number: '2',
},

And this is the code I am trying to:这是我想要的代码:

var isRepeated = false;
var numItems = items.length;
if (numItems > 0) {
    var item; 
    var letter;
    var number;
    var matrix = [[]];
    for (var j = 0; j < numItems; j++) {
        item = items[j];
        letter = item.letter;
        number = item.number;
        if (matrix[letter][number] == undefined) {
            matrix[letter][number] = true;
        } else {
            isRepeated = true;
            break;
        }
    }
}
matrix[letter][number]

You're trying to access elements of an array using string keys but arrays use integer indexes您正在尝试使用字符串键访问数组元素,但 arrays 使用 integer 索引

Here's an alternative if you just want to know if something is repeated如果您只想知道某事是否重复,这是另一种选择

 const props = [{ letter: 'A', number: '1', }, { letter: 'B', number: '2', }, { letter: 'A', number: '1', }, { letter: 'C', number: '2', }, ] const didRepeat = (array) => array.some(((hash) => ({letter, number}) => { const key = `${letter}_${number}`; if (hash.has(key)) return true; return hash.add(key), false; })(new Set())) console.log(didRepeat(props))

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

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