2015-01-06 2 views
0

В принципе у меня есть некоторые объекты, которые мне нужны только их данные без какой-либо функции внутри них, например:Clone только атрибуты, которые не являются функциями

var obj1 = { 
    test: function() { 
    doSomeStuff(); 
    }, 
    foo: 'bar', 
} 

var obj2 = _.someThing(obj1); 

> obj2 = { 
    foo: 'bar' 
} 

Я начал что-то вроде этого, но это не совсем то, что я хотите,

_.mapValues(obj1, function(value) { 
    if (_.isFunction(value)) { 
    return false; 
    } 
    return value 
}); 

> { test: false, foo: 'bar' } 

Очень предпочтительные решения с lodash.

+0

* «но это не совсем то, что я хочу» * Что это делает вы не хотите? Что это не значит, что ты * хочешь? Где вы застряли? Кажется, у вас есть все штуки. –

+0

@ T.J.Crowder Мне не нужно устанавливать атрибут 'test'. –

ответ

2

Вы можете использовать функцию _.pick, как этот

var res = _.pick(obj1, function (el) { 
    return !_.isFunction(el); 
}) 

Example

+0

Да, это ... спасибо. –

Смежные вопросы