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]
}