Javascript 如何基于过滤对象过滤对象

Javascript 如何基于过滤对象过滤对象,javascript,filter,Javascript,Filter,是否有一种方便的方法可以仅使用filterInterface中定义的属性过滤bigObject,从而将filteredObject作为输出 这个大对象有很多属性,我想将信息剥离到我需要的属性(要将其保存到某个地方,不想/无法保存整个对象) 简单地说,我希望有如下情况: var filteredObject = {} for (var key in filterObject) { if (bigObject.hasOwnProperty(key)) { filteredObject

是否有一种方便的方法可以仅使用
filterInterface
中定义的属性过滤
bigObject
,从而将
filteredObject
作为输出

这个大对象有很多属性,我想将信息剥离到我需要的属性(要将其保存到某个地方,不想/无法保存整个对象)


简单地说,我希望有如下情况:

var filteredObject = {}

for (var key in filterObject) {
  if (bigObject.hasOwnProperty(key)) {
    filteredObject[key] = bigObject[key];
  }
}
如果要进行“深度”筛选,请包括递归:

function filter(obj, filterObj) {
  var newObj = {};

  for (var key in filterObj) {

    if (obj.hasOwnProperty(key)) {

      if (typeof obj[key] == 'object' && typeof filterObj[key] == 'object') {
        newObj[key] = filter(obj[key], filterObj[key]);

      } else {
        newObj[key] = obj[key];
      }
    }
  }
  return newObj;
}


var o = filter(bigObject, filterInterface);

alert(o.prop1.prop7); // 'xxx'
alert(o.prop1.prop9); // undefined

简单地说,我希望有如下情况:

var filteredObject = {}

for (var key in filterObject) {
  if (bigObject.hasOwnProperty(key)) {
    filteredObject[key] = bigObject[key];
  }
}
如果要进行“深度”筛选,请包括递归:

function filter(obj, filterObj) {
  var newObj = {};

  for (var key in filterObj) {

    if (obj.hasOwnProperty(key)) {

      if (typeof obj[key] == 'object' && typeof filterObj[key] == 'object') {
        newObj[key] = filter(obj[key], filterObj[key]);

      } else {
        newObj[key] = obj[key];
      }
    }
  }
  return newObj;
}


var o = filter(bigObject, filterInterface);

alert(o.prop1.prop7); // 'xxx'
alert(o.prop1.prop9); // undefined