التابع jQuery.inArray()
في jQuery
jQuery.inArray( value, array [, fromIndex ] )
القيم المعادة
يعيد عددًا (Number).
الوصف
يبحث هذا التابع عن قيمة محدَّدة ضمن مصفوفةٍ ثمَّ يعيد قيمة فهرس موضعها (أو القيمة -1 إن لم يجدها).
jQuery.inArray( value, array [, fromIndex ] )
أُضيف مع الإصدار: 1.2.
value
أي شيء، ويمثل القيمة المراد البحث عنها.
array
المصفوفة المراد البحث ضمن عناصرها.
fromIndex
عددٌ (Number) يمثل قيمة فهرس أحد عناصر المصفوفة الذي يراد بدء عملية البحث عنده. القيمة الافتراضيَّة هي 0 أي البحث ضمن جميع عناصر المصفوفة دون استثناء.
يشبه التابع $.inArray()
تمامًا التابع .indexOf()
الأساسي في JavaScript، إذ يعيد كلاهما القيمة -1 عندما لا يعثران على أي عنصر مطابق. إن طابق العنصر الأول في المصفوفة القيمة value
المعطاة، فسيعيد التابع $.inArray()
القيمة 0 وهكذا.
لمَّا كانت JavaScript تعامل القيمة 0 وكأنَّها مساوية للقيمة المنطقيَّة false
على نحوٍ غير مضبوط (مثل 0 == false
ولكن 0 !== false
)، فأنت بحاجة للتأكُّد من وجود القيمة value
ضمن المصفوفة array
عبر التحقُّق من عدم مساواة القيمة المعادة للقيمة -1 (أو أن تكون أصغر منها).
عملية البحث عن العنصر ومطابقته مع القيمة المعطاة هي عمليَّة صارمة جدًا. فسنحصل في المثال التالي على القيمة -1 (العنصر غير موجود) لأنَّ التابع يبحث عن عدد ضمن مصفوفة تحوي سلاسل نصية:
$.inArray( 5 + 5, [ "8", "9", "10", 10 + "" ] );
أمثلة
عرض قيمة فهرس عناصر محدَّدة موجودة في المصفوفة:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.inArray مثالٌ عن استعمال التابع</title>
<style>
div {
color: blue;
}
span {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div>موقع "أحمد" في المصفوفة هو <span></span></div>
<div>موقع العدد 4 هو <span></span></div>
<div>لم يعثر على "جاسم لأن أعيدت القيمة <span></span></div>
<div>إن "سامر" موجود في المصفوفة ولكنه قبل الفرس 2، لذا <span></span></div>
<script>
var arr = [ 4, "سامر", 8, "أحمد" ];
var $spans = $( "span" );
$spans.eq( 0 ).text( jQuery.inArray( "John", arr ) );
$spans.eq( 1 ).text( jQuery.inArray( 4, arr ) );
$spans.eq( 2 ).text( jQuery.inArray( "Karl", arr ) );
$spans.eq( 3 ).text( jQuery.inArray( "Pete", arr, 2 ) );
</script>
</body>
</html>