返回具有其属性子集的对象

Hed*_*dge 3 javascript

我有一个像这样的平面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)

有没有像这样的东西?

Ale*_* T. 8

试试这个

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)

underscorejslodash中有方法.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)