我有一个像这样的平面JavaScript对象:
{
id: 3726492,
kind: 'user',
permalink: 'nicholas',
username: 'Nicholas',
...
a lot more attributes
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个只包含原始对象属性子集的新对象.
就像是
var newObject = oldObject.fields(['id', 'username']);
Run Code Online (Sandbox Code Playgroud)
newObject会
{
id: 3726492,
username: 'Nicholas'
}
Run Code Online (Sandbox Code Playgroud)
有没有像这样的东西?
试试这个
function pick(data, keys) {
var result = {};
keys.forEach(function (key) {
if (data.hasOwnProperty(key)) {
result[key] = data[key];
}
});
return result;
}
var data = {
id: 3726492,
kind: 'user',
permalink: 'nicholas',
username: 'Nicholas'
}
var newData = pick(data, ['id', 'kind']);
console.log(newData);Run Code Online (Sandbox Code Playgroud)
在underscorejs或lodash中有方法.pick
var data = {
id: 3726492,
kind: 'user',
permalink: 'nicholas',
username: 'Nicholas',
};
var newObject = _.pick(data, 'id', 'username');
console.log(newObject);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>Run Code Online (Sandbox Code Playgroud)