سلام خدمت دوستان عزیز
من میخوام RegEx ای بسازم که بتونم آرایه هامو فیلتر کنم فرض کنید
[1 , 2 , 3 , 4 ] رو داریم
[1 , 2 , 3 , 1 ] رو هم داریم
مثلا regex ای باشه که بتونیم توش بگیم 2 تا عنصر اول 1 و 2 باشه بقیه هرچی بود
یعنی هر دو آرایه ی بالا رو برگردونه
ممنون
با توجه به توضیحاتی که دادم، یعنی ابتدا به کمک توابع slice یا splice، بخش های موردنظرت از آرایه رو جدا میکنی.سپس عناصر رو با تابع join بهم وصل کنی.
بعدش عبارت باقاعده ای رو براش بسازی و به کمک تابع test اون رو ارزیابی کنی.
اگر ارزیابی مثبت بود، اون آرایه رو قبول کن وگرنه اون رو رَد کن.
میتونی ابتدا همه ی عناصر آرایه رو با تابع join بهم وصل کنی.
سپس عبارت باقاعده ای رو براش بسازی و به کمک تابع test اون رو ارزیابی کنی.
اگر ارزیابی مثبت بود، اون آرایه رو قبول کن وگرنه اون رو رَد کن.
@milad
مرسی میلاد جان واسه جوابت
من میخوام این اطلاعات رو از دیتابیس دریافت کنم برای همین ترجیح میدم فیلتر شده دریافت کنم که بهینه تر باشه
اگه به جایی برسه که مجبور شم همه داده ها رو بگیرم بعد پردازش انجام بدم حتما از روشت استفاده میکنم ممنون
سوالت رو دقیقتر بگی شاید جواب دیگه ای بتونم بدم.
وقتی شما اسم عبارات باقاعده رو آوردی و در خصوص عناصر آرایه گفتی، یعنی با کل عناصر آرایه سرُ کار داریم.
عبارات باقاعده اینجوری هستند، یعنی یک عبارت داریم میخوایم ببینیم قاعده ما درونش صادق هستش یا نه. وقتی شما واسه یک آرایه این رو مطرح می کنی، فکر می کنم معنیش اینه که با کل عناصر آرایه باید روبرو بشیم. اینکه یک join در ابتدا صورت میگیره برای بوجود آوردن ارتباط بین عناصر هستش.
ضمنا فکر نمی کنم عملیات خاصی محسوب بشه، پیچیدگیش خطی هستش، به طول آرایه.
خواهش میکنم، زنده باشی
اگر هم منظورت اینه که فقط با چند عنصر سروکار داریم، مثلا عناصر اول/دوم/سوم/چهارم، میتونی از دیگر توابع آرایه واسه گزینش این موارد استفاده کنی. از جمله: 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
(حالا ببینیم بقیه دوستان هم که نظر دادن، نظرشون چیه. منم میخونم همراه با شما)
با توجه به توضیحاتی که دادم، یعنی ابتدا به کمک توابع slice یا splice، بخش های موردنظرت از آرایه رو جدا میکنی.سپس عناصر رو با تابع join بهم وصل کنی.
بعدش عبارت باقاعده ای رو براش بسازی و به کمک تابع test اون رو ارزیابی کنی.
اگر ارزیابی مثبت بود، اون آرایه رو قبول کن وگرنه اون رو رَد کن.
@milad
@hossein.r.1442
خب مثل اینکه من سوالم رو بد پرسیدم
ببینین من یه سری داکیومنت توی دیتابیس mongo دارم
این ها یکی از مقادیرشون به صورت آرایه ذخیره میشه تا همینجا یه مثال بزنم
مدل ما :
name : پارسا
cart: [ "هاست" , "دامنه" , "سرور" ]
name:میلاد
cart:["هاست","دامنه","دامنه","لایسنس"]
مثلا تو 1000 تا نمونه این دو نمونه کارتشون با هاست و دامین شروع میشه
مثلا میخوام یک regex برای اونایی که المنت اولشون هاست هست المنت دومشون دامنه هست بنویسم سومی هم هرچی بود
let carts = User.find({cart : ["هاست", "دامنه" , "هرچی"]})
توجه داشته باشین ترتیب برام مهمه یعنی حتما اولی هاست دومی دامنه است ، تکرار هم داریم
ممنون از توجه تون
سلام
این کد کمکتون میکنه:
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}`);
});
}
این به درد کار شما میخوره
https://stackoverflow.com/questions/31831651/javascript-filter-array-multiple-conditions
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟