次のステートメントで、F12開発ツールのInternetExplorer9.0でこのエラーが発生しています。
arr = [];
for (i = 0; i < items.length; i ++) {
console.log(items[i]);
arr.push(items[i].join(','));
}
この方法は、IEを除くすべてのブラウザで機能します。なぜ機能しないのですか?
次のステートメントで、F12開発ツールのInternetExplorer9.0でこのエラーが発生しています。
arr = [];
for (i = 0; i < items.length; i ++) {
console.log(items[i]);
arr.push(items[i].join(','));
}
この方法は、IEを除くすべてのブラウザで機能します。なぜ機能しないのですか?
これが私の推測です(情報が不足しているため)。
次の組み合わせである可能性があります。
IE8でテストしている、またはIE9を使用している場合は、Quirksモードになっています
アレイを構築したときに、末尾を含めました,
クァークズモードまたはIE8以前では、配列のリテラル構文に末尾のコンマを含めると、(誤って)配列の最後に余分な項目が追加されます。
これは、最後のアイテムがになりundefined
、を使用するとエラーが発生することを意味します.join()
。
IE8以前、またはQuirksモードの任意のバージョンでは、次のようになります。
var items = [
["foo"],
["bar"],
["baz"], // <-- trailing comma
];
alert(items.length); // 4 (should be 3)
この問題は、arr=[]をvararr=[]に変更することで解決されました。
完全な答えではありませんが、私を助けてくれたでしょう...
次のように、joinメソッドを配列型の静的メソッド(おそらくC#の履歴を裏切る)として使用していると思いました。
var s = Array.join(myArray、 "、");
そして当然のことながら、私はその構文を使用している他の人を見つけることができません。驚くべきことは、Firefoxで動作したことです。IEにはいませんでした。それが私をここに導いた理由です。
より従来型への変更
var s = myArray.join( "、");
修正しました!