パスに基づいてオブジェクトを変更する

ザック・スターンズ

パスに基づいてオブジェクトを動的に変更しようとしています。しかし、私はいくつかの問題を抱えています。パスの値を取得する以下のメソッドがありますが、パスの値を変更する必要があります。パスの長さも重要ではないのでprop.prop.prop.prop、大丈夫です。例えば

let dataObj = {
  name: 'Old Name',
  address: {
    state: 'CA',
    timezone: 'America/California'
  }
}

let modifiedValues = {
  'name': 'New Name'
  'address.state': 'FL',
  'address.timezone': 'America/New_York'
}

2番目のオブジェクトをループし、キーと値を使用して最初のオブジェクトを変更するか、その構造に従う新しいオブジェクトを作成できるようにしたいです。そうすれば、次のようなオブジェクトが得られます。

let dataObj = {
  name: 'New Name',
  address: {
    state: 'FL',
    timezone: 'America/New_York'
  }
}

参照用のパスに基づいて値を取得する方法は次のとおりです。

getAttributeFromPath(path: string, entity: any): any {
  return path.split('.').reduce((a, b) => a && a[b], entity);
}
アルベルト・トリンダーデ・タバレス

のバージョンを作成getAttributeFromPathしてパスから属性を設定し、これを使用して最初のオブジェクトを変更できます。

以下では、の代わりにsetAttributeFromPathを使用してバージョン()を作成しましたforEachreduce

let dataObj = {
  name: 'Old Name',
  address: {
    state: 'CA',
    timezone: 'America/California'
  }
};

let modifiedValues = {
  'name': 'New Name',
  'address.state': 'FL',
  'address.timezone': 'America/New_York'
};

const setAttributeFromPath = (path, entity, value) => {
  const pathParts = path.split('.');
  let obj = entity;
  
  pathParts.forEach((part, index) => {
    if (obj[part]) {
      if (index < pathParts.length - 1) {
        obj = obj[part];
      } else {
        obj[part] = value;
      }
    }
  });
};

Object.entries(modifiedValues).forEach(([key, value]) => {
  setAttributeFromPath(key, dataObj, value);
});

console.log(dataObj);

setAttributeFromPathを使用した素敵なワンライナーバージョンを考え出すことができますreduce

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

変数に基づいてオブジェクトのプロパティを変更する

分類Dev

動的プロパティに基づいてオブジェクト値の配列を変更する

分類Dev

サブクラスに基づいてオブジェクトのプロパティの実際の値を変更する

分類Dev

タイトル検索に基づいてJavaScriptを使用してJSONオブジェクトを変更する

分類Dev

名前が配列の内容に基づいているオブジェクトを変更する

分類Dev

オブジェクトの変数に基づいてオブジェクトのリストからオブジェクトを取得する

分類Dev

別のオブジェクトの状態に基づいてcontextMenuStripを変更する

分類Dev

javascriptの別の配列に基づいてオブジェクトの配列の値を変更する

分類Dev

継承に基づいてオブジェクトタイプを変更する

分類Dev

関数パラメータC ++に基づいてオブジェクトプロパティを変更する方法

分類Dev

オブジェクトに基づいて要素を取得する

分類Dev

他のオブジェクトに基づいてオブジェクトの配列の値を変更する方法

分類Dev

メソッドを呼び出すときに基づいてクラスオブジェクトの引数を変更する

分類Dev

パラメータに基づいてオブジェクトのリストを分類する方法

分類Dev

プロパティに基づいてオブジェクトのリストを分割するc#

分類Dev

さまざまなオブジェクトタイプに基づいてJavaでリストを変更する場所

分類Dev

リスト内のオブジェクトのタイプに基づいてメソッドの戻りタイプを変更する

分類Dev

他のキー値に基づいてjsonオブジェクトの値を変更します

分類Dev

基準に基づいて2つのオブジェクトを比較する

分類Dev

要素の値に基づいて、オブジェクトの配列に残っている要素を変更する必要があります

分類Dev

オブジェクトプロパティに基づいてグローバル変数を変更します

分類Dev

オブジェクトを含む配列に基づいて、配列を含むオブジェクトを変更します

分類Dev

PHPを使用して特定のキーに基づいてオブジェクトを配列に変換する

分類Dev

プロパティに基づいてオブジェクト値を返す

分類Dev

デバイススウィフトの向きに基づいてオブジェクトのフォント、スタイルなどを変更します

分類Dev

オブジェクト名に基づいてリスト内に新しいリストを作成する

分類Dev

jQueryのオブジェクトの配列の比較に基づいてキー値を変更するにはどうすればよいですか?

分類Dev

関数の引数に基づいてRのオブジェクトの名前を変更するにはどうすればよいですか?

分類Dev

1つ以上の基準に基づいてリストからオブジェクトを検索する

Related 関連記事

  1. 1

    変数に基づいてオブジェクトのプロパティを変更する

  2. 2

    動的プロパティに基づいてオブジェクト値の配列を変更する

  3. 3

    サブクラスに基づいてオブジェクトのプロパティの実際の値を変更する

  4. 4

    タイトル検索に基づいてJavaScriptを使用してJSONオブジェクトを変更する

  5. 5

    名前が配列の内容に基づいているオブジェクトを変更する

  6. 6

    オブジェクトの変数に基づいてオブジェクトのリストからオブジェクトを取得する

  7. 7

    別のオブジェクトの状態に基づいてcontextMenuStripを変更する

  8. 8

    javascriptの別の配列に基づいてオブジェクトの配列の値を変更する

  9. 9

    継承に基づいてオブジェクトタイプを変更する

  10. 10

    関数パラメータC ++に基づいてオブジェクトプロパティを変更する方法

  11. 11

    オブジェクトに基づいて要素を取得する

  12. 12

    他のオブジェクトに基づいてオブジェクトの配列の値を変更する方法

  13. 13

    メソッドを呼び出すときに基づいてクラスオブジェクトの引数を変更する

  14. 14

    パラメータに基づいてオブジェクトのリストを分類する方法

  15. 15

    プロパティに基づいてオブジェクトのリストを分割するc#

  16. 16

    さまざまなオブジェクトタイプに基づいてJavaでリストを変更する場所

  17. 17

    リスト内のオブジェクトのタイプに基づいてメソッドの戻りタイプを変更する

  18. 18

    他のキー値に基づいてjsonオブジェクトの値を変更します

  19. 19

    基準に基づいて2つのオブジェクトを比較する

  20. 20

    要素の値に基づいて、オブジェクトの配列に残っている要素を変更する必要があります

  21. 21

    オブジェクトプロパティに基づいてグローバル変数を変更します

  22. 22

    オブジェクトを含む配列に基づいて、配列を含むオブジェクトを変更します

  23. 23

    PHPを使用して特定のキーに基づいてオブジェクトを配列に変換する

  24. 24

    プロパティに基づいてオブジェクト値を返す

  25. 25

    デバイススウィフトの向きに基づいてオブジェクトのフォント、スタイルなどを変更します

  26. 26

    オブジェクト名に基づいてリスト内に新しいリストを作成する

  27. 27

    jQueryのオブジェクトの配列の比較に基づいてキー値を変更するにはどうすればよいですか?

  28. 28

    関数の引数に基づいてRのオブジェクトの名前を変更するにはどうすればよいですか?

  29. 29

    1つ以上の基準に基づいてリストからオブジェクトを検索する

ホットタグ

アーカイブ