递归循环的变量作用域问题

var arr = [{
    a: 11,
    b: [{ a: 1 }, { a: 2 }]
}, {
    a: 22,
    b: [{ a: 3 }, { a: 4 }]
}];

var fff = function(data) {
    if (data.b)
        data.b.map(fff);
}

arr.map(fff)

只对fff函数做修改,有没有办法在fff方法里获取到11和22这两个值

阅读 3.3k
3 个回答

问题已自行解决……

新手上路,请多包涵

为什么对fff函数做修改?

昨天自己做了一个小玩具提交到npm了 题主可以试试

var selector = require('nodeobj-selector')

var arr = [{
    a: 11,
    b: [{ a: 1 }, { a: 2 }]
}, {
    a: 22,
    b: [{ a: 3 }, { a: 4 }]
}];

selector(arr, ['_root','[0:-1]', 'a'], function(data){
    console.log(data)
    return "test"
})

console.log(arr)

// 输出:
// 11
// test
// 22
// test
// [ { a: 'test', b: [ [Object], [Object] ] },
//   { a: 'test', b: [ [Object], [Object] ] } ]
推荐问题