【问题标题】:copy an array from another array on every click from specified index每次从指定索引单击时从另一个数组复制一个数组
【发布时间】:2020-08-30 21:37:55
【问题描述】:

例如,如果我有一个数组 a=[1,2,3,4,5,6,7,8] 和 b=[]。在每次点击事件中,我都会传递一个数字作为参数。 我需要将数组 a[] 从下一个元素推送到数组 b[] 。 对于第一次单击,我将 3 作为参数传递。现在数组 b[] 将从 a[0] 复制到 a[2],这给了我数组 b=[1,2,3]。

当我第二次单击并传递 2 作为参数时,现在数组 b[] 将从 a[3] 复制到 a[4],从而得到数组 b=[1,2,3,4,5]。

期望的结果: 点击(3) = b[1,2,3] 点击(2) = b[1,2,3,4,5]

相反,我得到了这个 点击(3) = b[1,2,3] 点击(2) = b[1,2]

a=[1,2,3,4,5,6,7,8];
b = [];

click(e){
for(let i=0; i<=e; i++){
b.push(a[i])
}

如何做到这一点?有什么想法吗!!提前致谢。

【问题讨论】:

  • 你能给出更详细的解释吗?
  • 考虑修改您的问题。令人困惑
  • 我无法弄清楚在代码中添加 a 的原因是什么
  • 我修改了我的问题。希望你现在能更好地理解。

标签: javascript arrays


【解决方案1】:

每当调用 click 函数时,您都会从 0 循环到 e。相反,您可能希望从 b.length(要复制的下一个索引)循环,然后再循环 e 索引(直到 b.length + e)。

【讨论】:

    【解决方案2】:

    toString 仅用于格式化代码以便在 sn-p 中更好地显示它。

    let a = [1,2,3,4,5,6,7];
    let b = [];
    
    function click(n) {
        for (let i=n; i>0; i--) {
            b = b.concat(a.splice(0,i));
            console.log(i + ': ' + '  a: ' + a.toString() + '    b: ' + b.toString());
        }
    }
    
    click(3);

    【讨论】:

      【解决方案3】:

      我按照@JonasWilms 的建议做了。这行得通。

      let a = [1,2,3,4,5,6,7];
      let b = [];
      
      function click(n) {
          
          for (var i=b.length; i<= n; i++) {
             b.push(a[i]);
             
          }
          console.log(b);
      }
      click(1);
      click(2);
      click(3);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        • 2014-11-22
        • 2021-06-24
        • 2022-11-10
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多