2017-08-20 22 views
1

私はJSで次のオブジェクトを持っています。最初のfinancial_year以外のすべてのキーを選択して新しい空のオブジェクトに挿入するにはどうすればよいですか?オブジェクトからキーをフィルタリングするにはどうすればよいですか?

個々の要素を選択するにはobj["mainline_revenue"]のような操作を行うことができますが、その長いリストは要素キーを個別に入力する必要はありません。もちろん

var newObj = Object.assign({}, obj); 
delete newObj.financial_year; 

他があります

var obj = {financial_year: 1, mainline_revenue: 18743, regional_revenue: 2914, other_revenue: 3198, salaries_wages: -6897} 

var newObj = {} 

新しいオブジェクトは、次のようになります。

console.log(newObj) 
{mainline_revenue: 18743, regional_revenue: 2914, other_revenue: 3198, salaries_wages: -6897} 

答えて

1

あなただけの望ましくないプロパティを削除するdeleteを使用し、その後Object.assignでオブジェクトのクローンを作成できこれを達成するためのより多くの機能的な方法、おそらくキーをフィルタリングし、次にオブジェクトに還元する:

var newObj = Object.keys(obj).filter(key => 
    key !== 'financial_year' 
).reduce((newObj, currKey) => 
    (newObj[currKey] = obj[currKey], newObj), 
{}); 

あなたがフィルタリングしたいキーの配列を持っていた、とキーがfilterコールバックで配列していた場合は、単にチェックすることができれば、このアプローチがより適しているだろうけど。

関連する問題