2017-09-20 22 views
0

サーバからの応答に基づいてローカルデータベースのデータを更新する必要がありますが、ローカルデータベースには必要ない大量のデータをサーバから取得していますこれらの不要な値を手動で削除しましたが、私は動的な方法でこれをやりたいと思います。だから、プラグマを使用してローカルデータベースから列名を取得し、私は私がarray.Butに格納されていた名前とサーバーから取得した値を比較し、object.can誰にでもキーと値を保存したいと思いますそれをする方法を教えてください? VARデータ= {ID:122、氏名: 'ABD'、カテゴリ '食品'}配列からのオブジェクトとJavaScriptの別のオブジェクトを渡す方法

columns = ['id', 'name', 'category']; 
category = {id: 122, name: 'ABD', category: 'Food', created_at: '2014-05-20', is_deleted: 'false'}; 

Iは、その結果を必要とします。

コード:

for (var j = 0; j < columns.length; j++) { 
      $log.log('Merged data is', value.category[columns[j]]); 
      $log.log('Data is', data); 
     } 
+0

を使用すると、このタイプのものに適しています。あなたがES6の使用に気をつけていないなら、あなたが私にどのように説明してもらいたいのであれば、 - > 'columns.reduce((a、v)=>(a [v] = category [v])&&、{})' psこれは動作します、私たちにお知らせください。 – Keith

答えて

2

あなたは、配列を反復処理し、要素がオブジェクトのプロパティであるかどうかを確認することができます。そうでなければ、オブジェクトからそのプロパティを削除できます。

for (var j = 0; j < columns.length; j++) { 
     if(category[columns[j]] === undefined){ 
     delete category[columns[j]]; 
     } 
} 

編集:

あなたはあなたが必要なプロパティを持つ新しいオブジェクトを作成することができますプロパティを削除したくない場合は、コメントで尋ねたよう:

var data = {}; 
for (var j = 0; j < columns.length; j++) { 
    data[columns[j]] = category[columns[j]]; 
} 
console.log(data); 
+0

しかし、私は余分なものを削除したくありません。私はローカルのdbで利用可能なカラムの値を取る必要があります。 –

+0

ok私はそれについても私の答えを編集します –

+0

こんにちは@Nidhinkumarそれはあなたの目的を解決するかどうかを確認し、それがあれば答えを受け入れてください。 –

0

lodashあなたが好きな場合は、1行のソリューション:

var data = _.map(category , _.partialRight(_.pick, ['id', 'name', 'category'])); 

lodash docここにhttps://lodash.com/docs/4.17.4

関連する問題