我有一個惡夢,試圖弄清楚爲什麼無論輸入什麼,該函數總是返回true。所討論的文檔是JSON文件。我已經把它變成變量測試,其結果總是看起來是真實的,不管什麼test_type「的是:無論輸入如何,函數返回true
var doc = {
"test_type": "test3"
};
var ignore = ['test1', 'test2', 'test3'];
test = (ignore.some(function(v) {
return doc.test_type.toLowerCase().indexOf(v) == -1;
}));
console.log('Test:', test);
但是,如果我用下面的代碼相反,它會只有'test_type'值在'ignore'數組中時才返回true。所以這將返回false。
var doc = {
"test_type": "test4"
};
var ignore = ['test1', 'test2', 'test3'];
test = (ignore.some(function(v) {
return doc.test_type.toLowerCase().indexOf(v) >= 0;
}));
console.log('Test:', test);
我想要做的是檢查是否test_type陣列中的值相匹配,或者更準確地說,如果從陣列中的字符串,可以發現作爲test_type陣列內的子串,和如果是,則從輸出中排除文檔。
我正困惑你*不*想,爲什麼沒有那些片段是爲你工作...... – deceze
也許你需要小寫數組元素,'return doc.test_type.toLowerCase()。indexOf(v.toLowerCase)> = 0' – Mihir
你的第二個函數是正確的。如果任何元素符合條件,some()將返回true。這就是爲什麼你的第一個函數總是返回「true」。 –