javascript – JS – 深图功能

前端之家收集整理的这篇文章主要介绍了javascript – JS – 深图功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Underscore.js有一个非常有用的地图函数.
_.map([1,2,3],function(num){ return num * 3; });
=> [3,6,9]
_.map({one: 1,two: 2,three: 3},function(num,key){ return num * 3; });
=> [3,9]

我正在寻找一个类似的函数,可以迭代嵌套对象或深度映射.经过一吨的搜索,我找不到这个.我可以找到的东西是采取深层对象,但不能遍历深层对象的每个值.

这样的东西

deepMap({
  one: 1,two: [
    { foo: 'bar' },{ foos: ['b','a','r','s'] },],three: [1,3]
},function(val,key) {
  return (String(val).indexOf('b') > -1) ? 'bobcat' : val;
})

怎么会这样做?

样品输出

{
  one: 1,two: [
    { foo: 'bobcat' },{ foos: ['bobcat',3]
}

解决方法

这是一个使用 transform的Lodash解决方
function deepMap(obj,iterator,context) {
    return _.transform(obj,function(result,val,key) {
        result[key] = _.isObject(val) /*&& !_.isDate(val)*/ ?
                            deepMap(val,context) :
                            iterator.call(context,key,obj);
    });
}

_.mixin({
   deepMap: deepMap;
});

猜你在找的JavaScript相关文章