2 番目に渡された引数のプロパティに応じて、オブジェクトをフィルター処理する再帰関数を作成しようとしています。
フィルタリングはうまく機能しますが、配列が空のオブジェクトに置き換えられています。これが発生しないようにするには、どうすればよいでしょうか。
var filter = function(obj, fields) {
var key, o;
if (typeof obj !== "object") { return obj;}
o = {};
for (key in obj) {
if (fields[key]) {
o[key] = filter(obj[key], fields[key]);
}
}
return o;
};
data = {name: "John Doe", followers: [], notAllowedProp: false}
allowedFields = {name: true, followers: true}
console.log(filter(data, allowedFields));
// => Object { name: "John Doe", followers: {}}