У меня есть массив данных => this.allNodeSets. В этом массиве я нахожу дубликаты. А теперь я хочу найти количество дубликатов. Единственный способ найти повторяющееся количество - say => itemCount.ball
Фиктивный код -
var randomArray = ["ball", "ball", "tree", "ball", "tree", "bus", "car"];
var itemCount = {};
randomArray.forEach(function(value){
if (value in itemCount) itemCount[value] = itemCount[value] + 1;
else itemCount[value] = 1;
});
Чтобы найти счет - сделать =>
itemCount.ball
Мне трудно найти этот индивидуальный счет, как это было сделано выше. Мой код -
app.component.ts - Угловой2 +
callFunctionSingleSelectedResult(){
allNodeSets = [
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
["claimIntimationRequestBody", "claimIntimationRequestBody"],
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
["claimIntimationRequestBody", "claimIntimationResponseBody"],
["claimIntimationRequestHeader", "claimIntimationRequestBody"],
["claimIntimationRequestHeader", "claimIntimationRequestHeader"],
["claimIntimationRequestHeader", "claimIntimationResponseBody"],
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
["claimIntimationRequestBody", "claimIntimationResponseBody"],
["claimIntimationRequestHeader", "claimIntimationResponseBody"],
]
var duplicateResult = this.findDuplicates(this.allNodeSets);
console.info("inside duplicates, result= ", duplicateResult);
//------------[1] count duplicates
var itemCount = {};
duplicateResult.forEach(function (value) {
if (value in itemCount)
itemCount[value] = itemCount[value] + 1;
else itemCount[value] = 1;
});
console.info("duplicateResult, forEach = count = ",
itemCount)
for (var i = 0; i < duplicateResult.length; i++) {
console.info(" individual count = ", itemCount)
}
}
// finding Duplicates
findDuplicates(arr) {
var len = arr.length,
out = [],
counts = {};
for (var i = 0; i < len; i++) {
var item = arr[i];
counts[item] = counts[item] >= 1 ? counts[item] + 1 : 1;
if (counts[item] > 1) {
out.push(item);
}
}
return out;
}
// Function duplicate ends
Вывод -
duplicateResult =
[
["claimIntimationRequestBody","claimIntimationRequestHeader"],
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
["claimIntimationRequestBody","claimIntimationRequestHeader"] ,
["claimIntimationRequestBody","claimIntimationResponseBody"],
["claimIntimationRequestHeader", "claimIntimationResponseBody"] ,
["claimIntimationRequestHeader" "claimIntimationResponseBody"]
]
duplicate count, counter = {["claimIntimationRequestBody","claimIntimationRequestHeader"]: 3,
["claimIntimationRequestBody","claimIntimationRequestBody"]: 1,
["claimIntimationRequestBody","claimIntimationResponseBody"]: 1}
Я обыскал всю сеть, но другого рабочего способа, с помощью которого я мог бы определить код, который дает счет, другим способом, нет. Пожалуйста, помогите определить способ получения количества узлов или, может быть, здесь есть способ получить количество узлов. Я не могу этого сделать.
Если я сделаю это -
for (var i = 0; i < duplicateResult.length; i++) {
console.info(" individual count = ", itemCount.duplicateResult)
}
Я получаю ошибку -
Property 'duplicateResult' does not exist on type '{}'.
Ссылка -
да. Я обнаружил дубликаты до их подсчета. Я включу это в свой вопрос
Устранение повторяющихся массивов не будет работать так, как вы сейчас пытаетесь, на массивы ссылаются по адресу, поэтому два массива, содержащие одинаковые элементы, будут разными при сравнении на равенство
Вы хотите узнать количество строк или количество подмассивов, поясните, пожалуйста?
Я хочу найти количество подмассивов
Вы назначаете переменную duplicateResult результату вызова findDuplicates, а затем переназначаете ей новое значение. Почему?
Нееет ... на самом деле это просто для справки. Я показываю вывод для справки xyz. См. Первый комментарий. Это фактический результат, который я получаю после findDuplicates.
Я исправил пожалуйста проверьте
Примечание: на самом деле у вас уже есть количество дубликатов в findDuplicates, так что вы снова выполняете ту же работу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


var randomArray = ["ball", "ball", "tree", "ball", "tree", "bus", "car"];
var counts = {};
randomArray.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });
console.info(counts)это рабочий пример, надеюсь, это поможет
var input= [
["claimIntimationRequestBody","claimIntimationRequestHeader"],
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
["claimIntimationRequestBody","claimIntimationRequestHeader"] ,
["claimIntimationRequestBody","claimIntimationResponseBody"],
["claimIntimationRequestHeader", "claimIntimationResponseBody"] ,
["claimIntimationRequestHeader", "claimIntimationResponseBody"]
];
var output = {};
input.forEach(item => {
// key is combination of all values of subarray
let key = item.join("_");
if (!output[key]) output[key] = 0;
output[key] +=1;
}
)
console.info(output)
Так у вас есть дубликат
arrays?