Я пытаюсь найти решение для сравнения двух hashmaps в javascript, но у меня есть трудности.
Это моя ситуация, у меня есть hashmap, состоящий из значения key + value
в виде массива.
Пример: 125: [1, 2, 3]
И затем я беру эти данные, и я сравниваю их с другим хэшмапом такого типа.
Пример:
123 : [[1 , 1 , 1][2 , 8.7 , 10]]
124 : [[0 , 0, 5.4][3 , 4 , 5][7, 9.1 , 6]
125 : [[1 , 2 , 3][0.4 , 4 , 8]]
Второй hashmap похож на первый, но его значение может содержать массив из N массивов. Цель: проанализировать второй хэш файл с моим первым хэшмапом и, во-первых, найти, являются ли ключи похожими, тогда, если он найдет значение первого в массиве второго, он должен вернуть "ОК",
Например, в этом случае: он вернет "OK"
потому что мы можем заметить, что key 125
и ее value
в первой хэш-карте включены в 125: [[1, 2, 3][0.4, 4, 8]]
Я должен не только проверять значения, но и клавиши
Вот еще один пример:
Обратите внимание, что первая хэш-карта всегда имеет 1 данные (ключ + значение) 1 ключ + 1 массив из 1 измерения
1-й hashmap: var hashmap1 = { 124: [ 1,1,1] }
2-й хэш файл:
var hashmap2 = {
123 : [0,0,0],
124 : [[ 0,1,1][0,0,1][1,1,1]]
125 : [9 , 8 , 7]
}
Результат: "ОК", потому что 124: [1,1,1]
находится в 124 :
[[0,1,1] [0,0,1] [1,1,1]
].
Простой способ сравнения массивов состоит в том, чтобы укрепить их и посмотреть, существует ли образец в другой строке
let sample = {
'124': [9,9,9], // expect no match .. key exists but array differs
'125': [1, 2, 3], //expect match
'555':[8,8] // expect no match ... key doesn't exist
}
let data = {
'123': [ [1, 1, 1],[2, 8.7, 10]],
'124': [[0, 0, 5.4],[3, 4, 5],[7, 9.1, 6]],
'125': [[1, 2, 3],[0.4, 4, 8]]
}
let res = Object.keys(sample).map(key => {
let msg = 'OK';
if(!data.hasOwnProperty(key)){
msg= 'No Match';
}else{
let arrayMatch = JSON.stringify(data[key]).indexOf(JSON.stringify(sample[key])) >-1;
msg = !arrayMatch ? 'No Match' : msg;
}
return key + ' : ' + msg;
});
console.log(res.join('\n'))