具有:
array = []
array.push(111,2122,333,9)
obj.user = {
'111' : {},
'2122' : {},
'333' : {},
'44' : {}
}
如何获取仅包含数组中存在的元素的新对象?
在上述情况下,它将返回:
{
'111': {},
'2122': {},
'111': {}
}
我已经尝试过了:
var newObj = _.keys(_.pick(obj.user, function(value, key) {
if ( _.indexOf(array, parseInt(key)) != -1 ) {
return obj.user[key]
}
}));
在jsfiddle上进行测试时,这可以很好地工作,但是使用process out of memory
会使我的应用程序崩溃。对象/数组不是很大,可能有20-30个项目,但是那段代码被执行了很多次。
答案 0 :(得分:4)
您可以使用_.pick
:
const result = _.pick(obj.user, array);
实时示例:
const array = [];
array.push(111,2122,333,9)
const obj = {
user: {
'111' : {},
'2122' : {},
'333' : {},
'44' : {}
}
};
const result = _.pick(obj.user, array);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>