首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何循环嵌套数组,然后使用Javascript以预定义的顺序存储输出

如何循环嵌套数组,然后使用Javascript以预定义的顺序存储输出
EN

Stack Overflow用户
提问于 2021-01-18 20:27:08
回答 3查看 81关注 0票数 2

编辑18.01.21 (见螺栓更改)

我很难找到一种方法来循环嵌套数组,然后按照所需的顺序存储输出。你能不能帮我找个办法让这件事成功,或者指出我做错了什么?

我想我在这个过程中错过了几步。例如,在某个点中断内部循环并临时存储我的数据。但是,我不知道在什么时候.值得一提的是,该代码将用于Google脚本中。

我使用的玩具数据如下所示:--我在我的玩具数据中添加了另一种类型的关键字--“纵横交错”和"bob“

代码语言:javascript
运行
复制
var keywords =  [ [ ["claude"],["clair"],["carl"], ["criss cross"] ],
                [ ["brad"],["bob"],["bill"] ["bob ross"] ] ];

我希望实现的输出如下:

代码语言:javascript
运行
复制
[ [ [ '[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' ] ] ]

但是,我正在创建的输出如下:

代码语言:javascript
运行
复制
[ [ [ '[claude]' ],[ '[clair]' ],[ '[carl]' ],[ '[brad]' ],[ '[bob]' ],[ '[bill]' ] ],
[ [ '"claude"' ],[ '"clair"' ],[ '"carl"' ],[ '"brad"' ],[ '"bob"' ],[ '"bill"' ] ],
[ [ '+claude' ],[ '+clair' ],[ '+carl' ],[ '+brad' ],[ '+bob' ],[ '+bill' ] ] ]

下面是我使用的代码:

代码语言:javascript
运行
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-18 20:45:29

您可以平铺数组并映射想要的样式。

代码语言:javascript
运行
复制
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);
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 2
EN

Stack Overflow用户

发布于 2021-01-18 20:42:32

代码语言:javascript
运行
复制
const keywords =  [[["claude"],["clair"],["carl"]],
                [["brad"],["bob"],["bill"]]];

keywords.flat(2).reduce((acc, key) => {
  const nestArr = [ [`[${key}]`], [`"${key}"`], [`+${key}`] ];
        
  return [...acc, nestArr];
} , []);
票数 2
EN

Stack Overflow用户

发布于 2021-01-18 20:43:24

解决方案

代码语言:javascript
运行
复制
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);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65781608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档