theo dõi

Gần nhất :

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : JavaScript
Hỏi lúc:
Lượt xem: 2,432

array.contains(obj) trong JavaScript?

Phạm Minh Châu Phạm Minh Châu
 03  02  01

Cách hiệu quả nhất để tìm ra 1 obj nếu một mảng JavaScript chứa một obj là gì? Hiện tại tôi đang sử dụng:

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

Liệu có cách tốt hơn và ngắn hơn để thực hiện việc này?

2,432 xem 06 theo dõi 00 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Tạ Nhã Trang Tạ Nhã Trang
 00  00  01

Dùng 1 dòng:

function contains(arr, x) {
    return arr.filter(function(elem) { return elem == x }).length > 0;
}
1,820 xem 00 hữu ích trả lời –
Vũ Ðình Quảng Vũ Ðình Quảng
 07  00  03

Tôi có cách này cho bạn:

Array.prototype.contains = function (v) {
    return this.indexOf(v) > -1;
}

var a = [ 'foo', 'bar' ];

a.contains('foo'); // true
a.contains('fox'); // false
1,829 xem 00 hữu ích trả lời –
Tạ Khai Minh Tạ Khai Minh
 00  00  02

Đóng góp nhỏ của tôi:

function isInArray(array, search)
{
    return array.indexOf(search) >= 0;
}

//usage
if(isInArray(my_array, "my_value"))
{
    //...
}
1,826 xem 00 hữu ích trả lời –
Huỳnh Bình Quân Huỳnh Bình Quân
 00  00  01

Dưới đây là một đoạn sử dụng Array.indexOf trong Javascript 1.6 :

if (!Array.indexOf)
{
  Array.indexOf = [].indexOf ?
      function (arr, obj, from) { return arr.indexOf(obj, from); }:
      function (arr, obj, from) { // (for IE6)
        var l = arr.length,
            i = from ? parseInt( (1*from) + (from<0 ? l:0), 10) : 0;
        i = i<0 ? 0 : i;
        for (; i<l; i++) {
          if (i in arr  &&  arr[i] === obj) { return i; }
        }
        return -1;
      };
}
1,831 xem 00 hữu ích trả lời –
Nguyễn Cao Nghiệp Nguyễn Cao Nghiệp
 00  00  01

Bạn có thể thử cách sau, update cách của bạn :

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
}

và bây giờ có thể sử dụng nó như sau:

alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains('2')); // => false
1,824 xem 00 hữu ích trả lời –