编辑18.01.21 (见螺栓更改)
我很难找到一种方法来循环嵌套数组,然后按照所需的顺序存储输出。你能不能帮我找个办法让这件事成功,或者指出我做错了什么?
我想我在这个过程中错过了几步。例如,在某个点中断内部循环并临时存储我的数据。但是,我不知道在什么时候.值得一提的是,该代码将用于Google脚本中。
我使用的玩具数据如下所示:--我在我的玩具数据中添加了另一种类型的关键字--“纵横交错”和"bob“。
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)
发布于 2021-01-18 20:45:29
您可以平铺数组并映射想要的样式。
const
keywords = [[["clau de"], ["clair"], ["carl"]], [["brad"], ["bob"], ["bill"]]],
result = keywords
.flat(Infinity)
.map(v => [`[${v}]`, `"${v}"`, v.split(' ').map(v => `+${v}`).join(' ')].map(v => [v]));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2021-01-18 20:42:32
const keywords = [[["claude"],["clair"],["carl"]],
[["brad"],["bob"],["bill"]]];
keywords.flat(2).reduce((acc, key) => {
const nestArr = [ [`[${key}]`], [`"${key}"`], [`+${key}`] ];
return [...acc, nestArr];
} , []);
发布于 2021-01-18 20:43:24
解决方案
var keywords = [
[["claude"], ["clair"], ["carl"]],
[["brad"], ["bob"], ["bill"]],
];
let result = keywords
.flatMap((i) => i)
.map((keyword) =>
["[key]", '"key"', "+key"].map((currentKey) => [
currentKey.replace(/key/g, keyword[0]),
])
);
console.log(result);
https://stackoverflow.com/questions/65781608
复制相似问题