برنامه نویسی

آرایه های JS | جهش ، نقشه ، تبدیل ، مرتب سازی مانند یک حرفه ای

سلام دوستان توسعه دهنده همکار من ، امروز در مورد روشهای آرایه در مورد استروئیدها بحث خواهم کرد. شما باید کمربند ایمنی خود را دست و پنجه نرم کنید زیرا این سفر کمی طولانی خواهد بود.

  • من ابتدا قطعه های کد خود را بر روی scribbler.live ایجاد می کنم ، که یک بستر خارق العاده است که به شما امکان می دهد بدون نیاز به تنظیم دستی ، یک نوت بوک JavaScript ، کامپایلر آنلاین و ویرایشگر را اجرا کنید.
  • علاوه بر این ، من پیوندی به قطعه های کد را شامل می شوم که شامل تمام نمونه های کد است تا بتوانید قطعه را باز کرده و خودتان آن را اجرا کنید تا نتایج را ببینید.
  • من استفاده خواهم کرد scrib.show از scribbler.live ، معادل آن است console.log

بیایید شیرجه بزنیم.

فهرست مطالب

جهش روشهای آرایه

این روش ها شامل:

  • push – در پایان یک عنصر جدید به آرایه اضافه می کند
  • pop – یک عنصر را از انتهای آرایه حذف می کند
  • unshit – یک عنصر جدید را به ابتدای آرایه اضافه می کند
  • shift – یک عنصر را از ابتدای آرایه حذف می کند
  • sort – آرایه را به ترتیب صعودی یا نزولی مرتب کنید
  • reverse – آرایه را از انتها تا ابتدا معکوس کنید
  • splice – می تواند عناصر را از هر فهرست اضافه ، حذف یا جایگزین کند
  • fill – می تواند عناصر را با همان مقدار به آرایه اضافه کند.

کدهای نمونه

// mutating methods
const tags = ["html", "css", "javascript", "react"]

// push
tags.push("nextjs")
scrib.show("Push - ",tags)

// pop
tags.pop()
scrib.show("Pop - ",tags)

// unshift
tags.unshift("nextjs")
scrib.show("Unshift - ",tags)

// shift
tags.shift()
scrib.show("Shift - ",tags)

// sort
tags.sort()
scrib.show("Sort - ",tags)

// reverse
tags.reverse()
scrib.show("Reverse - ",tags)

// splice
tags.splice(0,0,"HTML") // will replace first index element with HTML
tags.splice(0,2,"HTML") // will delete first 2 elements and replace with HTML
scrib.show("Splice - ",tags)

// fill
tags.fill("Scribbler",0,2) // replace first elements with Scribbler
scrib.show("Fill - ",tags)
حالت تمام صفحه را وارد کنید

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

فشار مشروط

// Methods on steroids - conditional push
const tags = ["html", "css", "javascript", "react"]

const addValidTags = (isTagValid) => {
  const invalidTag = "java"
  if(isTagValid !== invalidTag){
    tags.push(isTagValid)
  }
}
addValidTags("nextjs") // will add this to the array
addValidTags("java") // won't add this to the array
scrib.show(tags)
حالت تمام صفحه را وارد کنید

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

فیلتر مشروط

// Methods on steroids - conditional filtering
const tags = ["html", "css", "javascript", "react"]

const filters = (filterName) => {
  if(filterName === "sort"){
    tags.sort()
    return tags
  }
  else if(filterName === "reverse"){
    tags.reverse()
    return tags
  }
  else {
    return tags
  }
}

filters("sort") // first sort the tags
filters("reverse") // then reverse it
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

روشهای غیر جهش یافته

این روشها برخی از عملیات را انجام می دهد اما به جای تغییر آرایه اصلی ، در یک آرایه جدید ، این موارد شامل موارد زیر است:

  • filter – یک آرایه را بر اساس عملکرد پاسخ به تماس فیلتر می کند
  • map – بر اساس یک عملکرد پاسخ به تماس ، از آرایه استفاده کنید
  • slice – بخشی از آرایه را استخراج کنید
  • conact – ادغام 2 آرایه
  • flat – آرایه های چند بعدی یا تو در تو را صاف کنید
  • flatMap – آرایه های چند بعدی یا تو در تو را با 1 سطح صاف کنید و نقشه برداری را با عملکرد پاسخ به تماس با آن انجام دهید.

رمز نمونه

const technologies = [
  {
    name:"HTML",
    type:"Frontend"
  },
  {
    name:"CSS",
    type:"Frontend"
  },
  {
    name:"JS",
    type:"Frontend"
  },
  {
    name:"React",
    type:"Frontend"
  },
  {
    name:"Java",
    type:"Backend"
  },
  {
    name:"Node",
    type:"Backend"
  },
]

const otherTechnologies = [
  {
    name:"Python",
    type:"Backend"
  },
  {
    name:"Rust",
    type:"Backend"
  },
]

// filter method
const frontendTechs = technologies.filter(technology => {
  if(technology.type === "Frontend"){
    return technology
  }
})
scrib.show("Frontend techs - ",frontendTechs) // will return an array with items with type Frontend

// map method
const frontendTechsNames = frontendTechs.map(technology => technology.name) // will return an array with technology names with type Frontend
scrib.show("Frontend tech names - ",frontendTechsNames) // will return an array with items with type Frontend


// slice method
const firstThreeItems = technologies.slice(0,3) // first three items in the array
scrib.show("First three items - ",firstThreeItems)

// concat method
const combinedTechnologies = technologies.concat(otherTechnologies)
scrib.show("Combined technologies - ",combinedTechnologies)

// flat method
const nestedArrays = ["HTML","CSS","JS",["REACT","NEXTJS", ["TAILWIND",["SCSS"]]]]
const oneLevelFlat = nestedArrays.flat()
const twoLevelFlat = nestedArrays.flat(2)
const infinityLevelFlat = nestedArrays.flat(Infinity)
scrib.show(oneLevelFlat)
scrib.show(twoLevelFlat)
scrib.show(infinityLevelFlat)

// flatMap method
const webTechnologies = ["HTML","CSS","JS"]
const flatAndLowercase = webTechnologies.flatMap(technology => technology.toLowerCase())
scrib.show(flatAndLowercase)
حالت تمام صفحه را وارد کنید

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

زنجیر کردن روشها

// Chaining of methods
const technologies = [
  {
    name:"HTML",
    type:"Frontend"
  },
  {
    name:"CSS",
    type:"Frontend"
  },
  {
    name:"JS",
    type:"Frontend"
  },
  {
    name:"React",
    type:"Frontend"
  },
  {
    name:"Java",
    type:"Backend"
  },
  {
    name:"Node",
    type:"Backend"
  },
]

// Filter and map
const frontendNamesByChaining = technologies.filter(technology => technology.type === "Frontend").map(technology => technology.name)
scrib.show(frontendNamesByChaining)

// flat and map
const nestedArrays = ["HTML","CSS","JS",["REACT","NEXTJS", ["TAILWIND",["SCSS"]]]]
const flatAndMapChaining = nestedArrays.flat(Infinity).map(technology => technology.toLowerCase())
scrib.show(flatAndMapChaining)
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

جستجو و یافتن

این روشها به یافتن یک عنصر یا شاخص IT در یک آرایه کمک می کند ، این موارد شامل موارد زیر است:

  • find – برای یافتن یک عنصر مستقیماً در آرایه
  • findIndex – برای یافتن شاخص عنصر به طور مستقیم در آرایه
  • indexOf – شاخص اولین وقوع یک عنصر را در آرایه پیدا کنید
  • lastIndex – شاخص آخرین وقوع یک عنصر را در آرایه پیدا کنید.
  • includes – بررسی می کند که آیا یک آرایه حاوی یک مقدار است و درست/نادرست را برمی گرداند
  • some – بررسی می کند که آیا حداقل یک عنصر با یک شرط مطابقت دارد
  • every – بررسی می کند که آیا همه عناصر با یک شرط روبرو هستند

کدهای نمونه

// Searching and indexing methods
const humans = [
  {
    id: 1001,
    name: "Bruce",
    isAvailable: true
  },
   {
    id: 1002,
    name: "Clark",
    isAvailable: true
  },
   {
    id: 1003,
    name: "Diana",
    isAvailable: true
  },
   {
    id: 1004,
    name: "Barry",
    isAvailable: false
  }
]

const hereos = ["Batman","Superman","Wonder woman","Flash"]

// find method
const findBatman = humans.find(hero => hero.name === "Bruce")
scrib.show(findBatman) // { "id": 1001, "name": "Bruce", "isAvailable": true }

// findIndex method
const findSupermanIndex = humans.findIndex(hero => hero.name === "Clark")
scrib.show(findSupermanIndex) // 1

// indexOf method
const findFlash = hereos.indexOf("Flash")
scrib.show(findFlash) // 3

// lastIndex
const findSuperman = hereos.lastIndexOf("Superman")
scrib.show(findSuperman) // 1

// includes
const wonderWomanInTeam = hereos.includes("Wonder woman")
scrib.show(wonderWomanInTeam) // true

// some 
const availableHeros = humans.some(human => human.isAvailable === true)
scrib.show(availableHeros) // true

// every
const allHeroesAvailable = humans.every(human => human.isAvailable === true)
scrib.show(allHeroesAvailable) // false
حالت تمام صفحه را وارد کنید

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

زنجیر کردن با روش های دیگر

// Chaining with other array methods like filter
const humans = [
  {
    id: 1001,
    name: "Bruce",
    isAvailable: true
  },
   {
    id: 1002,
    name: "Clark",
    isAvailable: true
  },
   {
    id: 1003,
    name: "Diana",
    isAvailable: true
  },
   {
    id: 1004,
    name: "Barry",
    isAvailable: false
  }
]

const isBatmanAvailable = humans.filter(human => human.isAvailable).find(human => human.name === "Bruce")
scrib.show(isBatmanAvailable)
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

روشهای تکرار

  • forEach(callback) → حلقه ها از طریق عناصر ، برای هر عنصر تعریف نشده باز می گردد
  • entries() → یک تکرار را با جفت های ارزش کلید برمی گرداند
  • keys() → یک تکرار را با شاخص ها/کلیدها برمی گرداند
  • values() → یک تکرار را با مقادیر برمی گرداند

کدهای نمونه

const humans = [
  {
    id: 1001,
    name: "Bruce",
    isAvailable: true
  },
   {
    id: 1002,
    name: "Clark",
    isAvailable: true
  },
   {
    id: 1003,
    name: "Diana",
    isAvailable: true
  },
   {
    id: 1004,
    name: "Barry",
    isAvailable: false
  }
]

// forEach loop
humans.forEach(human => human.hasSuperPowers = true)
scrib.show("For each loop - ", humans)

// entries
scrib.show("ENTRIES")
for (const [key, value] of Object.entries(humans)) {
  scrib.show(`Key: ${key} and `, "Value: ",value);
}

// keys
scrib.show("KEYS")
for (const key of Object.keys(humans)) {
  scrib.show(`Key: ${key}`);
}

// values
scrib.show("VALUES")
for (const value of Object.values(humans)) {
  scrib.show("Values: ",value);
}
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

کاهش و تجمع

  • reduce(callback, initialValue) → یک عملکرد پاسخ به تماس را روی هر عنصر یک آرایه انجام دهید تا یک نتیجه انباشته شده واحد تولید شود.
  • reduceRight(callback, initialValue) → همان به عنوان reduce() اما فرآیندها از راست به چپ

رمز نمونه

// Flattening single level nested arrays with reduce
const technologies = [["HTML", "CSS"], ["JS", "TS"], ["REACT", "NEXTJS"]];

const flatArray = technologies.reduce((acc, arr) => acc.concat(arr), []);
scrib.show(flatArray);

const flatArrayFromRight = technologies.reduceRight((acc, arr) => acc.concat(arr), []);
scrib.show(flatArrayFromRight);
حالت تمام صفحه را وارد کنید

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

وقایع مختلف یک خواص

const sentence = "Hello i am bruce , bruce wayne , founder of wayne enterprises";

const wordCount = sentence.split(" ").reduce((acc, word) => {
  acc[word] = (acc[word] || 0) + 1;
  return acc;
}, {});
scrib.show(wordCount)
حالت تمام صفحه را وارد کنید

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

گروه بندی چیزها

const superheroes = [
  { name: "Batman", team: "Justice League" },
  { name: "Superman", team: "Justice League" },
  { name: "Flash", team: "Justice League" },
  { name: "Iron man", team: "Avengers" },
  { name: "Thor", team: "Avengers" },
  { name: "Captain america", team: "Avengers" },
];

const groupByTeam = superheroes.reduce((acc, superhero) => {
  (acc[superhero.team] = acc[superhero.team] || []).push(superhero);
  return acc;
}, {});

const teamJusticeLeague = groupByTeam["Justice League"]
const teamAvengers = groupByTeam["Avengers"]
scrib.show("Group team:",groupByTeam)
scrib.show("Justice League:",groupByTeam["Justice League"])
scrib.show("Avengers:",groupByTeam["Avengers"])
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

پیوستن و تبدیل

  • join(separator) ary آرایه را به یک رشته تبدیل می کند
  • toString() ary آرایه را به یک رشته جدا شده از کاما تبدیل می کند

کدهای نمونه

روش پیوستن

// join method
const superheroes = ["Batman", "Superman", "Flash", "Wonder woman"];

const joinHeroes = superheroes.join("") // join without a separator
const joinHeroesWithHyphen = superheroes.join("-") // join with a hyphen as a separator
scrib.show("Without seperator - ",joinHeroes)
scrib.show("Without seperator as hyphen - ",joinHeroesWithHyphen)
حالت تمام صفحه را وارد کنید

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

روش تستاین

// toString
const superheroes = ["Batman", "Superman", "Flash", "Wonder woman"];
const superheroesString = superheroes.toString();
scrib.show("Superheroes array as string separated by comma - ",superheroesString)
حالت تمام صفحه را وارد کنید

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

زنجیر کردن با روش های دیگر

// Chaining with other methods
const superheroes = ["Batman", "Superman", "Flash", "Wonder woman"];
const heroesWithLowerCase = superheroes.join(" ").toLowerCase()
scrib.show("Chaining with other methods - ",heroesWithLowerCase)
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

آرایه های تایپ شده (پیشرفته)

  • copyWithin(target, start, end) → بخشی از آرایه را به مکان دیگری کپی کنید
  • from(arrayLike, mapFn) a از یک شیء مانند آرایه آرایه ای ایجاد می کند
  • of(element1, element2, ...) a از عناصر داده شده آرایه ای ایجاد می کند

کدهای نمونه

در روش کپی کنید

// copyWithin method, rarely used
const superheroes = ["Batman", "Superman", "Flash", "Wonder woman"];

const copyFromIndex0To2 = superheroes.copyWithin(0, 2)
scrib.show(copyFromIndex0To2)
حالت تمام صفحه را وارد کنید

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

از روش

// from method
const batman = "Batman"
const arrayFromString = Array.from(batman)
scrib.show(arrayFromString)
حالت تمام صفحه را وارد کنید

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

روش

const createArrayFromWords = Array.of("Batman", "Superman", "Flash", "Wonder woman")
scrib.show(createArrayFromWords)
حالت تمام صفحه را وارد کنید

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

زنجیر کردن با روش دیگر

// Chaining with other methods
const superhereos = "Batman Superman Flash Wonder woman";
const convertSuperheroesToArray = superhereos.split(" ").join("-");
scrib.show()
scrib.show(Array.from(convertSuperheroesToArray))
حالت تمام صفحه را وارد کنید

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

پرداخت این تعبیه شده برای اجرای مثال کد ذکر شده در بالا

این برای این پست است ، به من اطلاع دهید که آیا می توانم در این مقاله پیشرفت هایی انجام دهم. همچنین ، وب سایت scribbler.live را بررسی کنید.

شما می توانید با من تماس بگیرید –

اینستاگرام – https://www.instagram.com/supremacism__shubh/
LinkedIn-https://www.linkedin.com/in/shubham-tiwari-b7544b193/
ایمیل – shubhmtiwri00@gmail.com

شما می توانید با کمک مالی در لینک زیر به من کمک کنید متشکرم
https://www.buymeacoffee.com/waaduheck

همچنین این پست ها را نیز بررسی کنید

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

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

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

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