برنامه نویسی

تفاوت از دو آرایه – انجمن DEV

شرح:

دو آرایه را مقایسه کنید و یک آرایه جدید را با هر آیتمی که فقط در یکی از دو آرایه داده شده یافت می شود، برگردانید، اما نه هر دو. به عبارت دیگر، اختلاف متقارن دو آرایه را برگردانید.

مثال ها

[1, 2, 3, 5], [1, 2, 3, 4, 5]
// should return [4].

[1, "calf", 3, "piglet"], [1, "calf", 3, 4]
// should return ["piglet", 4].
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رویکرد من برای حل این مشکل:

  • 2 آرایه را به هم متصل کنید.
  • هر مورد را به obj جدید اضافه کنید
  • اگر ناآرام است، مقدار 1 را دریافت کنید و اگر اینطور نیست، 2 را دریافت کنید.
  • در غیر این صورت، سیم برش خورده را با طول عددی برگردانید.
  • مورد را با مقدار 1 فیلتر کنید سپس عدد را ترسیم کنید.

راه حل من:

function diffArray(arr1, arr2) {
    let newArr = arr1.concat(arr2)
    let numObj = {}
    newArr.forEach((item)=>{
      numObj[item] = numObj[item] ? numObj[item] +1:1
    })

    return Object.keys(numObj)
    .filter((item)=>{
      return numObj[item] == 1
    })
    .map((num)=>{
      if(!isNaN(num)){
          return +num
      }
      return num
    })
  }

  diffArray([1, "calf", 3, "piglet"], [1, "calf", 3, 4]);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

روش freeCodeCamp برای حل این مشکل:

  • 2 آرایه را به هم متصل کنید.
  • اگر مورد شامل arr1 یا arr2 است فیلتر کنید و او را برگردانید.

راه حل freeCodeCamp:

function diffArray(arr1, arr2) {
  return arr1
  .concat(arr2)
  .filter(item => !arr1.includes(item) || !arr2.includes(item));
}

diffArray([1, "calf", 3, "piglet"], [1, "calf", 3, 4]);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر گونه راهنمایی یا ویرایش بسیار استقبال می شود. آن را در نظرات با من به اشتراک بگذارید ممنون که اینجا هستید!

دنبال کردن محمد عود بر

حرکت صفرها تا پایان

1682445228 857 حرکت صفرها تا پایان

اگر سوال یا بازخوردی دارید، لطفا با من در تماس باشید
1682445228 819 حرکت صفرها تا پایان

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا