我有这样输入:生成与串的组合排名
var a = [23, 45, 21], b = [45, 23], c = [21, 32], d = [23], e= [32], f= [50, 54];
这些都是独立的实体,并且可以在一个时间被传递只有一个阵列。 即生成等级(a)。 (b)
结果存储在全局变量中。每次我都会输入一个调用,结果会被更新。
而结果应该包括数组中所有值组合的排名。
输出应该是这样的:
{
"21": 2,
"23": 3,
"32": 2,
"45": 2,
"52": 1,
"54": 1,
"23, 45": 2,
"23, 45, 21": 1,
"21, 32": 1,
"50 : 54": 1,
"50" : 1
}
这就是我试图
var result;
function generateRank(abc) {
if(!result) {
result = {};
}
var spl = getCombinations(abc);
spl.forEach(function(st, index) {
var fArrayKey = st.split(":");
var noMatch = true;
Object.keys(result).forEach(function(key) {
console.log(key);
var matchedKey = containsAllStrings(key, fArrayKey);
if(matchedKey) {
console.log("macthed true ");
result[key] = result[key] + 1;
noMatch = false;
}
else {
console.log("macthed false ");
noMatch = true;
}
});
if(noMatch) {
result[fArrayKey] = 1;
}
});
}
function containsAllStrings(word, array) {
for(var k=0; k<array.length; k++) {
if(word.indexOf(array[k]) == -1) {
return false;
}
}
return true;
}
function getCombinations(chars) {
var result = [];
var f = function(prefix, chars) {
for (var i = 0; i < chars.length; i++) {
result.push(prefix + chars[i]);
f(prefix + chars[i] + ":", chars.slice(i + 1));
}
}
f('', chars);
return result;
}
任何帮助吗?
我已更新问题。 – MohanRajNK