JSON でエンコードされた PHP 配列があります。
<script>
var registeredEmails = <?php echo(json_encode($emails)); ?>;
</script>
これが機能することを確認するには、次のようにします。
console.log(registeredEmails);
// this outputs: ["john@domain.com", "mary@domain.com"]
そして今、その JSON を反復処理し、特定の文字列をそれに含まれるすべての文字列に対してテストしたいと思います。
for (var email in registeredEmails) {
if (registeredEmails.hasOwnProperty(email)) {
var duplicate = registeredEmails[email];
console.log(duplicate + ' is typeof: ' + typeof(duplicate));
// this outputs: john@domain.com is typeof: string
// $(this).val() is a string from somewhere else
if (duplicate.test($(this).val())) {
// we found a match
};
}
}
私が理解しているように、test()
メソッドは文字列の一致をテストします。変数duplicate
が文字列であることを確認するためにテストしましたが、明らかにオブジェクトのままです。次の JS エラーが表示されます。
Uncaught TypeError: Object john@domain.com has no method 'test'
何故ですか?