【问题标题】:Iterate over group of array and separate the output by number of iterations迭代数组组并按迭代次数分隔输出
【发布时间】:2021-01-11 20:16:28
【问题描述】:

我的代码当前为字符串中用逗号分隔的每个值创建一个新数组。

我正在尝试使用 results.length 作为迭代器计数器来迭代 results 的内部数组中的值,但我需要分离每次迭代的输出。我在传统的 for 循环中使用了 forEach 来迭代这些值,但这并不能提供所需的结果,它将所有值组合在一起。输入字符串可以包含按任意数量值分组的字符串的任意组合,因此我必须是通用的方法。

数据结构

    [
      ["abc","def"],["ghi", "jkl"]
    ]

输入字符串: "abc def, ghi jkl"
当前输出控制台日志1: abc def, ghi jkl
所需输出控制台日志1 : "abc" "def"
所需的输出控制台 Log2: "ghi" "jkl"

我正在尝试对此进行迭代

var s = "abc def, ghi jkl";

var result = s.split(',').map(a=>a.trim().split(' '));
console.log(result);
for (var i = 0; i < result.length; i++){
  result.forEach(a => {
  console.log(a[i]);
// console.log(a // should be i ++ and so on until i = results.length
});
}

【问题讨论】:

  • 如果您在此处找到解决方案,请考虑接受答案

标签: javascript arrays angular data-structures


【解决方案1】:

这是你要找的吗?

var s = "abc def, ghi jkl";

let data = s.split(",").map(d => d.trim().split(" "));

data.forEach(d => {
  console.log(d.join(" "));
})

【讨论】:

  • 我需要将它们返回到一个数组中,以便获取它们的值]
  • 如果你想将它们作为一个数组,那么你可以使用 remove .join(" ") 从上面的代码中。
  • 您在某处提到您想将它们作为一个组打印,而这正是正在发生的事情。至少这是每个人都从你的问题中理解的。
  • 是的,但需要单独的组。所以 [abc, def] 应该在第一次迭代后返回,然后 [ghi, jkl] 在第二次迭代中返回,依此类推,直到满足外部数组索引。所以基本上我们希望能够在同一代码单元内的不同表达式中使用它们。
【解决方案2】:

您正在使用第一个数组的索引迭代第二个数组。

试试这个:

    var s = "abc def, ghi jkl";
    var result = s.split(',').map(a=>a.trim().split(' '));
    
    result.forEach(innerArray => innerArray.forEach(a => console.log(a)));

【讨论】:

  • 是的,这就是我需要做的,因为用户输入的逗号分隔值越多,我们需要迭代的时间就越多。我需要按 1 个数组的索引对输出进行分组,因此应该在它们在字符串 @S 中输入的组中返回
【解决方案3】:

这是您想要实现的目标吗?您将能够记录第一个数组,然后是第二个数组,依此类推...

  • abc
  • 定义
  • jkl

这是输出这个的代码:

const s = 'abc def, ghi jkl';
const result = s.split(',').map(a => a.trim().split(' '));

for (let i = 0; i < result.length; i++) {
  for (let p = 0; p < result[i].length; p++) {
    console.log(result[i][p]);
  }
}

【讨论】:

  • 抱歉,我很难解释。输出需要记录在组中,所以 abc、def 需要记录在 'i' 的第一次迭代中,然后 i++ 下一个组一起记录,依此类推,尽可能多的组。希望能解决这个问题@paulhenry
【解决方案4】:

var s = [["abc","def"],["ghi", "jkl"]]

for(i = 0; i < s.length; i++) {
  console.log(s[i].toString().split(',').join(' '))
}

日志 1 ----> abc def

日志 2 ----> ghi jkl

【讨论】:

    【解决方案5】:

    我相信你想要这样的东西:

    var s = "abc def, ghi jkl, fgt tps fll"
    

    变成这样:

    [
    "abc",
    "def",
    "ghi",
    "jkl",
    "fgt",
    "tps",
    "fll"
    ]
    

    在这种情况下,您可以使用以下代码:

    var result = s.split(',').map(a=>a.trim().split(' '))
    
    const newTab = []
    // for every array inside your first array do
    result.forEach( tab => {
      // for every element of the inner array do
      tab.forEach( el => {
        // push every element into a new array
        newTab.push(el)
      })
    })
    
    console.log(newTab)
    

    【讨论】:

    • 我已经在sn-p中有这个了。我需要将它们分组输出,因为它们在字符串中,但它必须在循环中完成,因为我不知道用户将输入多少组单词。 @Elmehdi
    【解决方案6】:

    你在寻找这样的东西吗?

    const arr = [
      ["abc", "def"],
      ["ghi", "jkl"]
    ];
    
    arr.forEach(([word1, word2]) => console.log(word1, word2))

    【讨论】:

    • 不抱歉,这很难为我解释。基本上我有将它们分组的代码,因为它们在正确的数据结构中。我需要获取包含值的数组数组并迭代包含字符串的内部结果数组,并且我需要一次从每个位置 1 迭代中获取值。因此,当 for 循环运行 i = 0 时,我需要从数组 myArray[0] = ["abc","def"} 中获取值,因此我必须能够返回 myArray[0]。下一次迭代 i=1 myArray[1] =["ghi',"klm"] 我需要从 myArray[1] 中获取值。这必须持续到 i = results.length。
    • 我编辑了我的答案,但我仍然认为我并没有真正理解你在问什么。如果你有数组,你已经拥有了所有的值。你还想做什么?
    • 谢谢,不幸的是,这不会缩放,因为值不必成对输入,它可以是任何组合。只需要使用外部数组的索引迭代内部数组并将该臀部作为它自己的数组返回,直到循环结束。在这种情况下,它们会一起返回。我需要将它们放在单独的表达式中。
    • 是的,不幸的是,我还没有完全理解。我认为更多的输入和所需的输出示例会对我有很大帮助。也许您正在寻找类似Array.values().forEach() 的东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多