如何在嵌套数组中循环,然后使用Javascript按预定义顺序存储输出
编辑18.01.21(参见螺栓更改) 我很难找到一种方法来循环嵌套数组,然后按所需顺序存储输出。你能帮我想一个办法让这一切顺利进行,或者指出我做错了什么吗 我想我在这个过程中遗漏了几个步骤。例如,在某个点中断内部循环并临时存储数据。然而,我不确定在什么时候。。。值得一提的是,该代码旨在用于谷歌应用程序脚本 我使用的玩具数据如下所示: 我在我的玩具数据中添加了另一类关键字——“criss cross”和“bob ross”如何在嵌套数组中循环,然后使用Javascript按预定义顺序存储输出,javascript,arrays,for-loop,google-apps-script,nested,Javascript,Arrays,For Loop,Google Apps Script,Nested,编辑18.01.21(参见螺栓更改) 我很难找到一种方法来循环嵌套数组,然后按所需顺序存储输出。你能帮我想一个办法让这一切顺利进行,或者指出我做错了什么吗 我想我在这个过程中遗漏了几个步骤。例如,在某个点中断内部循环并临时存储数据。然而,我不确定在什么时候。。。值得一提的是,该代码旨在用于谷歌应用程序脚本 我使用的玩具数据如下所示: 我在我的玩具数据中添加了另一类关键字——“criss cross”和“bob ross” var keywords = [ [ ["claude&quo
var keywords = [ [ ["claude"],["clair"],["carl"], ["criss cross"] ],
[ ["brad"],["bob"],["bill"] ["bob ross"] ] ];
我希望实现的输出如下所示:
[ [ [ '[claude] '],[ '"claude"' ],[ '+claude' ] ],
[ [ '[clair]' ],[ '"clair"' ],[ '+clair' ] ],
[ [ '[carl]' ],[ '"carl"' ],[ '+carl' ] ],
[ [ '[criss cross]' ],[ '"criss cross"' ], [ '+criss +cross' ] ],
[ [ '[brad]' ],[ '"brad"' ],[ '+brad' ] ],
[ [ '[bob]' ],[ '"bob"' ],[ '+bob' ] ],
[ [ '[bill]' ],[ '"bill"' ],[ '+bill' ] ],
[ [ '[bob ross]' ],[ '"bob ross"' ], [ '+bob +ross' ] ] ]
但是,我创建的输出如下所示:
[ [ [ '[claude]' ],[ '[clair]' ],[ '[carl]' ],[ '[brad]' ],[ '[bob]' ],[ '[bill]' ] ],
[ [ '"claude"' ],[ '"clair"' ],[ '"carl"' ],[ '"brad"' ],[ '"bob"' ],[ '"bill"' ] ],
[ [ '+claude' ],[ '+clair' ],[ '+carl' ],[ '+brad' ],[ '+bob' ],[ '+bill' ] ] ]
以下是我使用的代码:
var keywords = [[["claude"],["clair"],["carl"]],
[["brad"],["bob"],["bill"]]];
var keywords = [].concat.apply( [], keywords );
const PERMUTATION = function permuation( item ) {
var exact = [];
var phrase = [];
var modyfied = [];
for( let i = 0 ; i < item.length ; i++ ) {
var output1 = "[" + item[i] + "]";
exact.push([output1]);
var output2 = '"' + item[i] + '"';
phrase.push([output2]);
var temp = [item[i][0].split(" ").map( i => "+" + i ).join(" ")];
modyfied.push(temp);
}
return new Array( exact, phrase, modyfied ) ;
}
var output = PERMUTATION(keywords);
console.log(output)
var关键字=[[[“克劳德”],[“克莱尔”],[“卡尔”],
[“布拉德”]、[“鲍勃”]、[“比尔”]];
var关键字=[].concat.apply([],关键字);
常量置换=函数置换(项){
var精确=[];
var短语=[];
var modyfied=[];
for(设i=0;i“+”+i.join(“”));
模推(温度);
}
返回新数组(精确、短语、modyfid);
}
var输出=排列(关键字);
console.log(输出)
解决方案
var关键字=[
[“克劳德”]、[“克莱尔”]、[“卡尔”],
[“布拉德”]、[“鲍勃”]、[“比尔”],
];
让结果=关键字
.flatMap((i)=>i)
.map((关键字)=>
[“[key]”、“[key]”、“+key]”。map((currentKey)=>[
currentKey.replace(/key/g,关键字[0]),
])
);
控制台日志(结果)代码>您可以展开阵列并映射所需的样式
const
关键词=[[“clau de”],[“clair”],[“carl”],[[“brad”],[“bob”],[“bill”],
结果=关键字
.平坦(无限)
.map(v=>[`[${v}]`,`${v}``,v.split('').map(v=>`+${v}`.).join('').map(v=>[v]);
控制台日志(结果)代码>
作为控制台包装{max height:100%!important;top:0;}
我不确定结果应该是什么,但电子表格的结构如下所示:
[ [ [ '[claude] '],[ '"claude"' ],[ '+claude' ] ],
[ [ '[clair]' ],[ '"clair"' ],[ '+clair' ] ],
[ [ '[carl]' ],[ '"carl"' ],[ '+carl' ] ],
[ [ '[criss cross]' ],[ '"criss cross"' ], [ '+criss +cross' ] ],
[ [ '[brad]' ],[ '"brad"' ],[ '+brad' ] ],
[ [ '[bob]' ],[ '"bob"' ],[ '+bob' ] ],
[ [ '[bill]' ],[ '"bill"' ],[ '+bill' ] ],
[ [ '[bob ross]' ],[ '"bob ross"' ], [ '+bob +ross' ] ] ]
可乐
可乐
可乐
可乐
可乐
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
谢谢你的意见,尼娜。我稍微修改了我的问题。我在我的玩具数据集中又添加了两个关键词——“criss cross”和“bob ross”。如果我理解正确,您的代码将返回[+bob ross]
作为输出。但是,我需要[+bob+ross]
作为输出。这就是我在上一个语句中使用.split
和.join
的原因。是否可以相应地更改您的代码?事实上,所讨论的关键字可能超过两个单词。因此,代码在这方面需要灵活。@jonasjohajohanson,请参阅编辑。谢谢您的输入,Ivan。你的代码可以工作。不过,我稍微修改了我的问题。我在我的玩具数据集中又添加了两个关键词——“criss cross”和“bob ross”。如果我理解正确,您的代码将返回[+bob ross]
作为输出。但是,我需要[+bob+ross]
作为输出。这就是我在上一个语句中使用.split
和.join
的原因。是否可以相应地更改您的代码?重要的是要注意,关键字可能不仅仅是两个单词<代码>[“这是一个测试”]
也可以。