基于Javascript的字符串无限CSS选择器继承问题
我有一个名为继承的函数,其代码如下所示:基于Javascript的字符串无限CSS选择器继承问题,javascript,html,css,arguments,Javascript,Html,Css,Arguments,我有一个名为继承的函数,其代码如下所示: function uniqueArray(a) { var seen = {}, out = [], len = a.length, j = 0, i for(i = 0; i < len; i++) { var item = a[i]; if(seen[item] !== 1) { seen[item] = 1; out[j++] = item }} return out } function inher
function uniqueArray(a) {
var seen = {}, out = [], len = a.length, j = 0, i
for(i = 0; i < len; i++) {
var item = a[i];
if(seen[item] !== 1) {
seen[item] = 1;
out[j++] = item
}}
return out
}
function inheritance(lang, parent, child) {
if(lang instanceof Array && parent instanceof Array && child instanceof Array) {
var finArray=[], a, b, c
for(a = 0; a < lang.length; ++a) {
for(b = 0; b < parent.length; ++b) {
for(c = 0; c < child.length; ++c) {
finArray.push(lang[a] + "-" + parent[b] + " > " + lang[a] + "-" + child[c])
}}}
return uniqueArray(finArray).join(", ");
}}
我将此作为输出:
lang1-parent1>lang1-child1,lang1-parent1>lang1-child3,lang1-parent1>lang1-child4,lang1-parent2>lang1-child1,lang1-parent2>lang1-child2,lang1-parent2>lang1-child3,lang1-parent3>lang1-child1,lang1-parent3>lang1-child2,lang1-parent3,lang1-parent3>lang1-child4,lang2-parent1>lang2-child2,lang2-parent1>lang2-child3,lang2-parent1>lang2-child4,lang2-parent2>lang2-child2,lang2-parent2>lang2-child3,lang2-parent2>lang2-child4,lang2-parent3>lang2-child1,lang2-parent3>lang2-child2,lang2-parent3>lang2-child3,lang2-parent3>lang2-child4
另一个更自然的例子:
console.log(
inheritance(
["javascript", "python"],
["comment", "string"],
["number", "text"]
)
)
这就产生了:
javascript注释>javascript编号,javascript注释>javascript文本,javascript字符串>javascript编号,javascript字符串>javascript文本,python注释>python编号,python注释>python文本,python字符串>python编号,python字符串>python文本
所以,现在是主要问题。我的继承函数仅限于一个孩子。但是我想附加多个child(我说的是childs中的childs)。例如,如果我这样做:
console.log(
inheritance(
["js"],
["comment", "string"],
["text"],
["semiText"],
["evenSemiText"]
)
)
我会得到:
js评论>js文本>js半文本>js半文本,js字符串>js文本>js半文本>js半文本
我说的是无限的继承。我能够获得父-子继承和父-子继承(函数示例为父-子类型)类型继承,但我从未达到无限。我认为可以使用参数进行思考,但不确定(我不太熟悉)。那么,这能做到吗?提前谢谢。我不知道你为什么要这么做,但我想这就是你想要的。不确定这是否足够有效
函数继承(…args){
const found=新集合();
for(设i=0;i{
child.forEach(c=>{
找到。添加(`${lang}-${p}>${lang}-${c}`)
})
})
}
}
}
}
返回数组.from(find.values()).join(“,”)
}
我不知道你为什么要这么做,但我认为这就是你想要的。不确定这是否足够有效
函数继承(…args){
const found=新集合();
for(设i=0;i{
child.forEach(c=>{
找到。添加(`${lang}-${p}>${lang}-${c}`)
})
})
}
}
}
}
返回数组.from(find.values()).join(“,”)
}
我想,你在寻找递归我想,你在寻找递归
console.log(
inheritance(
["js"],
["comment", "string"],
["text"],
["semiText"],
["evenSemiText"]
)
)