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

标签 javascript arrays for-loop google-apps-script nested

编辑 18.01.21(查看 bolt 更改)

我在寻找循环遍历嵌套数组然后以所需顺序存储输出的方法时遇到问题。你能帮我想出一种方法来完成这项工作,或者指出我做错了什么吗?

我想我在这个过程中遗漏了几个步骤。例如,在某个时候打破内部循环并临时存储我的数据。但是,我不确定在什么时候......重要的是,该代码旨在用于 Google Apps 脚本

我使用的玩具数据如下所示: 我在我的玩具数据中添加了另一种类型的关键字——“criss cross”和“bob ross”

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)

最佳答案

您可以展平数组并映射所需的样式。

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; }

关于javascript - 如何循环遍历嵌套数组,然后使用 Javascript 以预定义的顺序存储输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65781608/

相关文章:

arrays - R 中的循环数组

javascript - vue3 isCustomElement 正在将组件检测为 vue 组件

javascript - 从 Axios React 排序数组

javascript - 如何为以下 Angular 函数编写单元测试用例

python - 在 numpy 中创建不同大小列表的所有可能组合

javascript - JS : strange result while accessing to arguments by key

javascript - 带有 replace() 的正则表达式仅用于字母

javascript - 使用 Vue3 对产品进行分组并显示产品数组中的数量

python - 假设一个数组只包含两种元素,如何快速找到它们的边界?

php - 如何在 FOR 循环中多次执行准备好的 SQL 语句?