ali salimi
5 سال پیش توسط ali salimi مطرح شد
11 پاسخ

طبیق دادن کلمات در یک المنت

سلام بچه ها من چند دکمه دارم. که هر دکمه یک ایدی مخصوص مثلا (u123123, r123123 , e123123 , v123123)به خودش رو داره که این ایدی ها یک کلمه بهشون اضافه شده و در اصل سرچمشه ش از یک ایدی اصلی که (123123) است. هستش.
میخام وختی روی چند دکمه تصادفی کلیک میکنم. و بیاد اونایی که ریشه ایدی هاشون شبیه هم باشه بهم بگه که ریشه اینا شبیه به همه. نمیخام از php استفاده کنم و میخام از جی کویری یا جاوااسکریپت استفاده کنم. آیا کسی راه حلی سراغ داره که مثلا اگه من چند تا دکمه رو زدم و دوتا ازشون یک ایدی منشا مشابه داشتن خبر بده; در واقع نمیخام درخواستی سمت سرور بره و همونجا اعتبارسنجی بشه
مثلا آلرت بده که تداخل داره دوتاشون. و وقتی اون دو دکمه ای که تداخل داره رو یکشون رو ورداشتم دیگه الرت نده.


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

از splice استفاده کنید

 array.splice(index, 1);

اول Index المان مورد نظر رو پیدا کنید بعد حذفش کنید. فقط هنگامی که مقادیر تکراری دارید، دقت کنید که Index گزینه درست رو دربیارید

برای این کار میتونید در ابتدا هنگام اضافه کردن به آرایه در متد myFunction ایندکس رو هم وارد کنید. طول کل آرایه رو که دارید + ۱ کنید. ایندکسی که باید اضافه بشه شمارش در میاد
و همون ایندکس رو به myFunction2 هم پاس بدید. این جوری همیشه مقدار تکراری با index ای که شما بهش دادی، حذف میشه.

array.length + 1

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

سلام
متن تون خطای نوشتاری زیاد داره، حتی عنوان سوال تون هم ایراد داره. درست متوجه نشدم دنبال چی هستید و مقصودتون چیه.
متن تون رو تونستید اصلاح کنید و با مثال بفرمایید خروجی مدنظرتون چی هستش.


ali salimi
@salim 5 سال پیش مطرح شد
0

@milad
@ali.bayat
@hesammousavi

بذارید یه جور دیگه بیان کنم. مثلا در کد زیر میخام وقتی روی دکمه 1 زده شده 18 رو اضافه کنه به آرایه ها و وقتی روی دکمه شماره 2 زده شد فقط اون عدد 18 رو حذف کنه و بقیه رو حذف نکنه همین.

<!DOCTYPE html>
<html>
<body>

<p>Click the button to add a new element to the array.</p>

<button name="number1" onclick="myFunction()">Try it</button>
<button name="number2" onclick="myFunction2()">Try it</button>

<p id="demo"></p>

<script>
var fruits = [23, 41, 12, 15, 34,10];
document.getElementById("demo").innerHTML = fruits;

function myFunction() {
  fruits.push("18");
  document.getElementById("demo").innerHTML = fruits;
}
function myFunction2() {
  fruits.pop("18");
  document.getElementById("demo").innerHTML = fruits;
}
</script>

</body>
</html>

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش آپدیت شد
1

درود.

برای حذف از تابع زیر استفاده کنید:

function arrayRemove(arr, value) {

   return arr.filter(function(ele){
       return ele != value;
   });

}

            var arr = [1, 2, 3, 4, 5];
            var data = arrayRemove(arr, 3);
            console.log(data);
            // [1, 2, 4, 5]

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
2

مقاله زیر راه‌های متفاوت حذف المان‌های آرایه رو توضیح داده.
https://love2dev.com/blog/javascript-remove-from-array/

موفق باشید


ali salimi
@salim 5 سال پیش مطرح شد
0

@ali.bayat
درود بر شما دوست عزیز،
بنده میخوام مثلا اگه توی آرایه دو تا چند تا 18 وجود داره با کلیک بر روی دکمه شماره 2 فقط یکی از (18)ها رو حذف کنه در واقع تابع ارسالی شما بزرگوار فیلتر میکنه و اگه دو تا 18 وجود داشته باشه هر دو رو حذف میکنه..
و متشکرم بابت لینک ارسالی شما، احتمالا تو مقاله بتونم یه چزی ازش دربیام. سپاسگذارم


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

خوب اگر سناریو به این شکل هست شما باید از طریق index المان هارو حذف کنی


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

از splice استفاده کنید

 array.splice(index, 1);

اول Index المان مورد نظر رو پیدا کنید بعد حذفش کنید. فقط هنگامی که مقادیر تکراری دارید، دقت کنید که Index گزینه درست رو دربیارید

برای این کار میتونید در ابتدا هنگام اضافه کردن به آرایه در متد myFunction ایندکس رو هم وارد کنید. طول کل آرایه رو که دارید + ۱ کنید. ایندکسی که باید اضافه بشه شمارش در میاد
و همون ایندکس رو به myFunction2 هم پاس بدید. این جوری همیشه مقدار تکراری با index ای که شما بهش دادی، حذف میشه.

array.length + 1

ali salimi
@salim 5 سال پیش آپدیت شد
0

@ali.bayat
@hesammousavi
ولی مشکل اینجاست باید آرایه باشه. و در جایی دیگه تطبیق داده میشن. داستان اینجوریه مثلا:
هر کالا یک ایدی داره و هر کالا 10 تا آپشن داره .(خود این اپشن ها از ایدی کالاشون استفاده کردن که وقتی برای کالا (id = eee) هستش برای اپشن هاش هم ایدی زدم که آپشن اولیش (id = 23eee) هستش و فلان آپشن (id = 34eee) هستش یعنی اون ایدی اصلی کالا هم روی هر کدام از آپشن ها وجود داره)
و قانونش اینه (هر کاربر فقط میتونه از هر کالا یک آپشن رو انتخاب کنه، و همچنین مثلا میتونه (کالا 1 با آپشن فلان رو با کالا 2 با آپشن فلان) باهم ثبت کنه. ولی نباااید بتونه (کالا 1 با آپشن یک + کالا 1 با آپشن دو) رو ثبت کنه و آلرت بده بهش که باید بری یکی از آپشن هارو ورداری که تداخل نداشته باشه. مثلا تداخل درس ها توی دانشگاس با این تفاوت نمیخام در سرور چک شه و پاسخ دریافت کنه.
برای یک کالا به تعداد آپشن هاش button قرار دادم که کاربر قابلیت کلیک کردن روی اونا رو داره
خب من اومدم برا هر کلیکی که انجام میشه ایدیشو دریافت کردم. بر فرض کاربر بر روی |کالا 1 با آپشن اول و دوم| کلیک کرده و ایدیهاشون رو که (34eee و 21eee) بود اعدادشو حذف کردم و مقدار باقی مانده که (eee) هستش به تعدادشون که دوتا هستش توی آرایه قرار دادم. و میخام وقتی رفت و زد روی آپشن اول یکی از eee ها که مربوط به زمان ثبت خودشه ورداشته بشه و دوباره بیاد گزینه ثبت رو بزنه و گزینه ثبت دوباره چک میکنه اگه ورداشته شده براش ثبت کنه
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
هنوز که هنوزه تلاش هام نتیجه نداده، اگه اینو با php میزدم خیلی راحت بود ولی میخام ارسال نشه به سرور و با جاوا اسکریپت یا کتابخانه جی کوئری انجام بشه


ali salimi
@salim 5 سال پیش مطرح شد
0

متشکرم از پاسختون در رابطه با index ها من این پاسخ رو ندیدم میرم امتحانش میکنم ببین چجوریاس. سپاسگذارم قربان


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

خواهش می‌کنم. موفق باشید


ali salimi
@salim 5 سال پیش مطرح شد
0

خیلی ممنون و سپاسگذارم عااااالی بود اینجور فقط اون عددی که اضافه شده حذف میشه واقعا سپاس فراوان


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

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