arrayer - Hur man får tillgång till antalet dubbletter i javascript/typescript
Jag har en array med data => this.allNodeSets. I denna array hittar jag duplicerade värden. Och nu vill jag hitta antalet duplicerade värden. Det enda sättet att hitta antalet duplicerade är att säga => itemCount.ball
Dummy-kod -
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;
});
För att hitta antalet - gör =>
itemCount.ball
Jag har svårt att hitta denna individuella räkning som gjorts ovan. Min kod -
app.component.ts - Angular2+
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.log("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.log("duplicateResult, forEach = count = ",
itemCount)
for (var i = 0; i < duplicateResult.length; i++) {
console.log(" 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
Utdata -
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}
Jag har sökt igenom hela webben men det finns inget annat fungerande sätt där jag kan bestämma en kod som ger räkningen på något annat sätt. Snälla hjälp till med att hitta ett sätt att hämta nodräkningen eller kanske finns det här ett sätt att hämta nodräkningen. Jag kan inte göra det.
Om jag gör detta -
for (var i = 0; i < duplicateResult.length; i++) {
console.log(" individual count = ", itemCount.duplicateResult)
}
Jag får fel -
Property 'duplicateResult' does not exist on type '{}'.
Referens -
Hur kontrollerar man om elementen i en array upprepas?
Svar #1
var randomArray = ["ball", "ball", "tree", "ball", "tree", "bus", "car"];
var counts = {};
randomArray.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });
console.log(counts)detta är ett fungerande exempel, jag hoppas att detta hjälper
Svar #2
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.log(output)
