English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
前言:在日常开发工作中我们可能会遇到js中对象中所有值的复制工作,也有可能是通过electron开发客户端,改版时候面临到的设置合并问题。那么本文将对此做一个简要解决方案的叙述。
介绍:比如有obj1, obj2,我们需要将obj1中的所有与obj2中相同字段相同深度的值copy给obj2,并且需要保持obj2字段结构不变,调用一下方法即可(采用ES6写法)。
代码:
/** * 将src中的数据copy到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 (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لإبلاغنا، وقدم الدليل على الدليل، وسيتم حذف المحتوى المزعوم عن انتهاك حقوق النسخ على الفور.