gpt4 book ai didi

javascript - JS - 深度 map 功能

转载 作者:可可西里 更新时间:2023-11-01 01:28:20 25 4
gpt4 key购买 nike

Underscore.js 有一个非常有用的 map 函数。

_.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, 6, 9]

我正在寻找可以遍历嵌套对象或深度映射的类似函数。经过大量搜索后,我真的找不到这个。我能找到的东西可以提取一个深层对象,但不会遍历深层对象的每个值。

像这样:

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

如何做到这一点?

示例输出

{
one: 1,
two: [
{ foo: 'bobcat' },
{ foos: ['bobcat', 'a', 'r', 's'] },
],
three: [1, 2, 3]
}

最佳答案

这是一个使用 transform 的 Lodash 解决方案

function deepMap(obj, iterator, context) {
return _.transform(obj, function(result, val, key) {
result[key] = _.isObject(val) /*&& !_.isDate(val)*/ ?
deepMap(val, iterator, context) :
iterator.call(context, val, key, obj);
});
}

_.mixin({
deepMap: deepMap
});

关于javascript - JS - 深度 map 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com