【发布时间】:2019-05-05 16:33:10
【问题描述】:
我有一个数据数组 => 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 - 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
输出 -
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.log(" individual count = ", itemCount.duplicateResult)
}
我收到错误 -
Property 'duplicateResult' does not exist on type '{}'.
参考-
【问题讨论】:
-
所以你有重复的
arrays? -
是的。我在 count 之前发现了重复项。我将把它包括在我的问题中
-
消除重复数组不会像您现在尝试的那样工作,数组是通过地址引用的,因此两个包含相同元素的数组在比较相等性时会有所不同
-
您要查找字符串的数量或子数组的数量,请澄清?
-
我要查找子数组的个数
标签: javascript arrays angular typescript