English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
前書き:日常開発作業では、jsのオブジェクト内のすべての値のコピー作業に直面することがあります。また、electronでクライアントを開発し、リリース時の設定統合問題に直面することがあります。そこで、本文ではこの問題に対する簡単な解決策を述べます。
紹介:例えば、obj1, obj2、obj1の中のすべてのobj2の中の同じフィールドの同じ深さの値をobjにコピーする必要があります。2そして、obj2フィールド構造が変更されない場合、このメソッドを呼び出すだけで良い(ESを使用しています)。6書き方)。
コード:
/** * srcの中のデータをdistにコピーし、distの構造を保持します。 * @param src * @param dist */ copyValue(src, dist) { if (!src || typeof(src) !== 'object' || typeof(dist) !== 'object'){ return ; } let keys = Object.keys(dist) if (keys && keys.length > 0 && isNaN(keys[0])){ keys.forEach(key => { let value = dist[key] let srcVal = src[key] // オブジェクトかどうかを確認し、オブジェクトの場合はさらに再帰的に再帰します、そうでない場合はアサインまたは無視します if (value !== undefined && typeof(value) === 'object' && srcVal && typeof(srcVal) === 'object' && srcVal[0] === undefined){ copyValue(srcVal, value) } else if (value !== undefined && srcVal && typeof(value) == typeof (srcVal)){ // ソースデータが存在し、型が一致する場合、アサインを開始します dist[key] = src[key] } } } ,
これでこの記事のすべての内容が終わりました。皆様の学習に役立てば幸いです。また、ナイアラテキストゥールのサポートを多くいただければと思います。
声明:この記事の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、アップロードした内容であり、このウェブサイトは所有権を持ちません。また、人間による編集は行われておらず、関連する法的責任も負いません。著作権侵害が疑われる内容がある場合は、メールを送信して:notice#oldtoolbag.com(メールで送信時は、#を@に変更してください。侵害を報告し、関連する証拠を提供してください。一旦確認ができたら、このサイトは即座に侵害された内容を削除します。)