匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

こんにちは。JavaScript初心者です。jQueryを使った構文でIE8以下でエラーが出てしまい困っています。自分ではどうしてもうまくいかないので、どなたかご教授いただけないでしょうか。

以下のコードのreduceプロパティがIE8ではサポートされていないようなのですが、他に書き方はあるのでしょうか。どうかよろしくお願いします。


function parseString(str) {
return String(str)
.split(/&|;/)
.reduce(function(ret, pair) {
try{
pair = decodeURIComponent(pair.replace(/\+/g, ' '));
} catch(e) {
// ignore
}

var eql = pair.indexOf('='),
brace = lastBraceInKey(pair),
key = pair.substr(0, brace || eql),
val = pair.substr(brace || eql, pair.length),
val = val.substr(val.indexOf('=') + 1, val.length);

if ('' == key) key = pair, val = '';

return merge(ret, key, val);
}, { base: {} }).base;
}

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2012/08/25 23:51:53
  • 終了:2012/08/26 17:37:47

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2012/08/26 02:17:30

以下をコピペしとけばreduceが使えるようになります。

if (!Array.prototype.reduce) {
  Array.prototype.reduce = function reduce(accumulator){
    if (this===null || this===undefined) throw new TypeError("Object is null or undefined");
 
    var i = 0, l = this.length >> 0, curr;
 
    if(typeof accumulator !== "function") // ES5 : "If IsCallable(callbackfn) is false, throw a TypeError exception."
      throw new TypeError("First argument is not callable");
 
    if(arguments.length < 2) {
      if (l === 0) throw new TypeError("Array length is 0 and no second argument");
      curr = this[0];
      i = 1; // start accumulating at the second element
    }
    else
      curr = arguments[1];
 
    while (i < l) {
      if(i in this) curr = accumulator.call(undefined, curr, this[i], i, this);
      ++i;
    }
 
    return curr;
  };
}

reduce | Mozilla Developer Network

匿名質問者

ありがとうございました。無事動作しました。もっと勉強します。

2012/08/26 17:37:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません