js双重循环返回的问题

 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)
感觉怎么写都不对 

老司机指导迷津 不胜赶紧

阅读 3.5k
3 个回答

arr1 根据 arr 得到数据,肯定外层循环的是 arr,然后再往 arr1 中 push 值

你的思路是不是这样子的?

遍历 arr,在arr1中放入 item 个 index 值。 比如 arr[0]=3 在 arr1 中放入 3 个 0,这种操作?

    var arr = [3, 2, 2, 2];
    var arr1 = [] // 返回 [0,0,0,1,1,2,2]
    arr.forEach(function (item, index) {
        while(item-- > 0){
            arr1.push(index);
        }
    });
    console.log(arr1);

function ss() {

    var arr = [3, 2, 2, 2];
    var arr1 = []; // 返回 [0,0,0,1,1,2,2]
    var n = 0;
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr[i]; j++) {
            arr1.push(n);
        }
        n++;
    }
    console.log(arr1);

}

你这个肯定得不到你想要的值啊 你arr都是静态的 arr1每循环一次 定义一个num 然后再循环arr return num
这样你arr1的值不就都一样了吗
换个思路 吧num定义在外面吧 再试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题