なぜ入力が何であっても、この関数が常に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
2番目の関数は正しく機能します。 'some()'は条件を満たす要素があれば 'true'を返します。それであなたの最初の関数が常に 'true'を返すのです。 –