确定nestead数组是否包含值

时间:2016-02-21 21:11:03

标签: javascript jquery arrays

我有这个数组:

var arr = [['blue','143'], ['red', '256'], ['white', '321']];

现在我需要检查嵌套数组的red索引中是否存在0

JQuery $.inArray(value, array)中有一个方法,在这种情况下可以没问题。但我不知道如何使用它来搜索这些项目:

var arr = [['blue','143'], ['red', '256'], ['white', '321']];
// these       ^              ^                ^

我该怎么做?

我想要这个:

var word = 'red';    // true
var word = 'black';  // false
var word = 'blue';   // true
var word = 'afwqwe'; // false

3 个答案:

答案 0 :(得分:1)

你可以这样做:

var arr = [['blue','143'], ['red', '256'], ['white', '321']];
var search = function(term) {
    var result = false;
    for(var i=0; i<arr.length; i++) {
        for(var j=0; j<arr[i].length; j++) {
            if(term == arr[i][j]) {
                result = true;
            }
        }
    }
    return result;
}
var word = search('red');    // true
var word = search('black');  // false
var word = search('blue');   // true
var word = search('afwqwe'); // false

没有indexOf,这有点不那么优雅,在大型阵列上可能会很慢,但它会起作用!

答案 1 :(得分:1)

您可以使用Array#some()

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

function check(array, value) {
    return array.some(function (a) {
        return a[0] === value;
    });
}

var arr = [['blue', '143'], ['red', '256'], ['white', '321']];

document.write(check(arr, 'red') + '<br>');    // true
document.write(check(arr, 'black') + '<br>');  // false
document.write(check(arr, 'blue') + '<br>');   // true
document.write(check(arr, 'afwqwe') + '<br>'); // false

没有迭代器的版本:

function check(array, value) {
    var i;
    for (i = 0; i < array.length; i++) {
        if (array[i][0] === value) {
            return true;
        }
    }
    return false;
}

var arr = [['blue', '143'], ['red', '256'], ['white', '321']];

document.write(check(arr, 'red') + '<br>');    // true
document.write(check(arr, 'black') + '<br>');  // false
document.write(check(arr, 'blue') + '<br>');   // true
document.write(check(arr, 'afwqwe') + '<br>'); // false

答案 2 :(得分:1)

这是一个可以进行测试的函数:

&#13;
&#13;
doc_log = math.log(n_doc)
local_weight = np.log(np_freq_matrix_ordered + 1)
for col_i, np_p_ij_matrix_sum_i in enumerate(np_p_ij_matrix_sum):
    local_weight_j = local_weight[:, col_i]
    ind = np_p_ij_matrix[:, col_i]>0
    local_weight_j[ind] *= 1 + np_p_ij_matrix_sum_i[ind] / doc_log
    np_log_entropy_weight_matrix[:, col_i] = local_weight_j    
&#13;
&#13;
&#13;