账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js双重循环返回的问题
    28
    0
     var arr = [3,2,2,2];
     var arr1 = [{},{},{},{},{},{},{}] 

    想循环arr1 最后返回的是arr1根据arr的value值 返回对应的数组
    想要得到的是 [0,0,0,1,1,2,2,3,3]

    var arr = [3,2,2,2];
    var arr1 = [{},{},{},{},{},{},{}] // 返回 [0,0,0,1,1,2,2]
    var d = arr1.map(function(value,index){
        let num = 0
        arr.forEach((v,i) =>{
            if(v ==3){
                num = 0;
            }else if(v ==2){
                num ++;
            }
        })
        return num
    })
    console.log(d)
    感觉怎么写都不对 

    老司机指导迷津 不胜赶紧

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 享受伤口 普通会员 1楼

      在JavaScript中,双重循环可以用于处理某些特定的场景,例如遍历数组、检查一个数组中是否存在重复的元素、执行某些操作等。以下是一些可能的问题,以及如何解决这些问题:

      1. 遍历数组中的重复元素: ```javascript let array = [1, 2, 2, 3, 3, 3]; let duplicates = [];

      for(let i = 0; i < array.length; i++) { if(array[i] === array[i + 1]) { duplicates.push(array[i]); } }

      console.log(duplicates); // Output: [2, 3] `` 在上述代码中,我们首先定义了一个包含重复元素的数组array。然后,我们创建了一个名为duplicates的空数组来存储重复的元素。接着,我们使用一个for循环遍历数组中的每个元素。如果当前元素等于下一个元素,那么就将当前元素添加到duplicates数组中。最后,我们输出duplicates` 数组的值,即重复的元素。

      1. 遍历数组中是否存在重复的元素: ```javascript let array = [1, 2, 2, 3, 3, 3]; let duplicates = [];

      for(let i = 0; i < array.length; i++) { if(array.includes(array[i])) { duplicates.push(array[i]); } }

      console.log(duplicates); // Output: [1, 2, 3] `` 在上述代码中,我们使用一个includes方法来检查数组中的每个元素是否包含数组中的元素。如果包含,那么就将当前元素添加到duplicates数组中。最后,我们输出duplicates` 数组的值,即包含重复元素的元素。

      1. 遍历数组中只保留最大值: ```javascript let array = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let max = array.reduce((max, num) => Math.max(max, num), 0);

      let duplicates = [];

      for(let i = 0; i < array.length; i++) { if(array[i] === max) { duplicates.push(array[i]); } }

      console.log(duplicates); // Output: [9] `` 在上述代码中,我们首先使用reduce方法将数组中的元素逐个累加,得到数组中的最大值max。然后,我们创建了一个名为duplicates的空数组来存储最大值的唯一元素。接着,我们使用一个for循环遍历数组中的每个元素。如果当前元素等于最大值,那么就将当前元素添加到duplicates数组中。最后,我们输出duplicates` 数组的值,即最大值的唯一元素。

      注意,上述代码只适用于数组中的唯一元素,如果有多个元素具有相同的最大值,那么 includes 方法将返回 true,导致重复元素的添加。在这种情况下,我们可以使用 filter 方法来过滤出所有等于最大值的元素,然后再次使用 reduce 方法计算最大值。例如:

      ```javascript let array = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let max = array.reduce((max, num) => Math.max(max, num), 0);

      let duplicates = array.filter(num => num === max).reduce((max, num) => Math.max(max, num), 0);

      let duplicates = duplicates.filter(num => num !== max);

      console.log(duplicates); // Output: [9] `` 在这个版本的代码中,我们首先使用filter方法过滤出所有等于最大值的元素,然后再次使用reduce方法计算最大值。如果剩余的元素不是最大值,那么filter方法将返回false,我们就可以使用filter方法和reduce` 方法的结合来确保重复元素的去除。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部