【发布时间】:2015-09-19 08:27:49
【问题描述】:
我的数据库返回这种用户对象:
{
name: "Name",
surname: "Surname",
scores: [<array of scores here>],
facebook_id: "fb_id_here",
access_token: "4y8y09n3vy09y0",
last_login: "some date",
register_date: "somedate"
sessions_count: 453
}
有没有比创建一个包含选定字段的新对象更快的方法来创建只包含一些键值对的对象?比如:
var NewObject = UserObject.filterFields([name, surname, sessions_count, scores]);
应该产生:
{
name: "Name",
surname: "Surname",
scores: [<array of scores here>],
sessions_count: 453
}
谢谢。
【问题讨论】:
-
比什么更快的方法?你忘记了密码。
-
比这样创建一个新的:
var newObject = { name: UserObject.name surname: UserObject.surname, scores: UserObject.scores, sessions_count: UserObject.sessions_count } -
看看lodash的
pick和omit。 -
见stackoverflow.com/questions/30496010/…,stackoverflow.com/questions/25527554/…。另外,我认为您要求“更快”,因为您已经分析了代码并将性能问题缩小到代码的这一部分?顺便说一句,您指定的语法 (
filterFields([name, ...]) 将是无效语法并导致 ReferenceError 因为name未定义。
标签: javascript object filter