使用 JavaScript 中的二维数组检测重复值
Working with two dimensional arrays in JavaScript to detect repeated values
我一直在研究一个示例,该示例使用以下 JavaScript 代码检测字母数字的重复。
但它不起作用。这个想法是它检测到组合 A-1 被重复;使用控制矩阵。
这是项目 JSON 结构:
{
letter: 'A',
number: '1',
},
{
letter: 'B',
number: '2',
},
{
letter: 'A',
number: '1',
},
{
letter: 'C',
number: '2',
},
这是我正在尝试的代码:
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]
您正在尝试使用字符串键访问数组元素,但数组使用整数索引
如果您只是想知道是否重复某些内容,这里有一个替代方案
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))
我一直在研究一个示例,该示例使用以下 JavaScript 代码检测字母数字的重复。
但它不起作用。这个想法是它检测到组合 A-1 被重复;使用控制矩阵。
这是项目 JSON 结构:
{
letter: 'A',
number: '1',
},
{
letter: 'B',
number: '2',
},
{
letter: 'A',
number: '1',
},
{
letter: 'C',
number: '2',
},
这是我正在尝试的代码:
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]
您正在尝试使用字符串键访问数组元素,但数组使用整数索引
如果您只是想知道是否重复某些内容,这里有一个替代方案
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))