Parsa Hassani
5 سال پیش توسط Parsa Hassani مطرح شد
9 پاسخ

RegEx برای فیلتر کردن آرایه

سلام خدمت دوستان عزیز
من میخوام RegEx ای بسازم که بتونم آرایه هامو فیلتر کنم فرض کنید

[1 , 2 , 3 , 4 ] رو داریم
[1 , 2 , 3 , 1 ] رو هم داریم

مثلا regex ای باشه که بتونیم توش بگیم 2 تا عنصر اول 1 و 2 باشه بقیه هرچی بود
یعنی هر دو آرایه ی بالا رو برگردونه
ممنون


ثبت پرسش جدید
میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
1

با توجه به توضیحاتی که دادم، یعنی ابتدا به کمک توابع slice یا splice، بخش های موردنظرت از آرایه رو جدا میکنی.سپس عناصر رو با تابع join بهم وصل کنی.
بعدش عبارت باقاعده ای رو براش بسازی و به کمک تابع test اون رو ارزیابی کنی.
اگر ارزیابی مثبت بود، اون آرایه رو قبول کن وگرنه اون رو رَد کن.


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

میتونی ابتدا همه ی عناصر آرایه رو با تابع join بهم وصل کنی.
سپس عبارت باقاعده ای رو براش بسازی و به کمک تابع test اون رو ارزیابی کنی.
اگر ارزیابی مثبت بود، اون آرایه رو قبول کن وگرنه اون رو رَد کن.


Parsa Hassani
تخصص : برنامه نویس وب ، موبایل اپ و م...
@f4ran 5 سال پیش مطرح شد
0

@milad
مرسی میلاد جان واسه جوابت
من میخوام این اطلاعات رو از دیتابیس دریافت کنم برای همین ترجیح میدم فیلتر شده دریافت کنم که بهینه تر باشه
اگه به جایی برسه که مجبور شم همه داده ها رو بگیرم بعد پردازش انجام بدم حتما از روشت استفاده میکنم ممنون


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

سوالت رو دقیقتر بگی شاید جواب دیگه ای بتونم بدم.

وقتی شما اسم عبارات باقاعده رو آوردی و در خصوص عناصر آرایه گفتی، یعنی با کل عناصر آرایه سرُ کار داریم.
عبارات باقاعده اینجوری هستند، یعنی یک عبارت داریم میخوایم ببینیم قاعده ما درونش صادق هستش یا نه. وقتی شما واسه یک آرایه این رو مطرح می کنی، فکر می کنم معنیش اینه که با کل عناصر آرایه باید روبرو بشیم. اینکه یک join در ابتدا صورت میگیره برای بوجود آوردن ارتباط بین عناصر هستش.
ضمنا فکر نمی کنم عملیات خاصی محسوب بشه، پیچیدگیش خطی هستش، به طول آرایه.


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

خواهش میکنم، زنده باشی

اگر هم منظورت اینه که فقط با چند عنصر سروکار داریم، مثلا عناصر اول/دوم/سوم/چهارم، میتونی از دیگر توابع آرایه واسه گزینش این موارد استفاده کنی. از جمله: slice یا splice
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

(حالا ببینیم بقیه دوستان هم که نظر دادن، نظرشون چیه. منم میخونم همراه با شما)


سید حسین رضوی
تخصص : برنامه نویس وب و طراح رابط کار...
@hossein.r.1442 5 سال پیش مطرح شد
0

من حقیقت درست متوجه نشدم شما دنبال چی هستید


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
1

با توجه به توضیحاتی که دادم، یعنی ابتدا به کمک توابع slice یا splice، بخش های موردنظرت از آرایه رو جدا میکنی.سپس عناصر رو با تابع join بهم وصل کنی.
بعدش عبارت باقاعده ای رو براش بسازی و به کمک تابع test اون رو ارزیابی کنی.
اگر ارزیابی مثبت بود، اون آرایه رو قبول کن وگرنه اون رو رَد کن.


Parsa Hassani
تخصص : برنامه نویس وب ، موبایل اپ و م...
@f4ran 5 سال پیش آپدیت شد
0

@milad
@hossein.r.1442
خب مثل اینکه من سوالم رو بد پرسیدم
ببینین من یه سری داکیومنت توی دیتابیس mongo دارم
این ها یکی از مقادیرشون به صورت آرایه ذخیره میشه تا همینجا یه مثال بزنم
مدل ما :
name : پارسا
cart: [ "هاست" , "دامنه" , "سرور" ]

name:میلاد
cart:["هاست","دامنه","دامنه","لایسنس"]

مثلا تو 1000 تا نمونه این دو نمونه کارتشون با هاست و دامین شروع میشه
مثلا میخوام یک regex برای اونایی که المنت اولشون هاست هست المنت دومشون دامنه هست بنویسم سومی هم هرچی بود

let carts = User.find({cart : ["هاست", "دامنه" , "هرچی"]})

توجه داشته باشین ترتیب برام مهمه یعنی حتما اولی هاست دومی دامنه است ، تکرار هم داریم

ممنون از توجه تون


Mohammad Amin Mokhtari
تخصص : برنامه نویس
@amin.mokhtari94 5 سال پیش مطرح شد
1

سلام
این کد کمکتون میکنه:

const regex = /\[\s*"p1"\s*,"p2"\s*,*(.*)\]/gm;
const str = `[  "p1" ,"p2" , "anything"]`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }

    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

سید حسین رضوی
تخصص : برنامه نویس وب و طراح رابط کار...
@hossein.r.1442 5 سال پیش مطرح شد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام