14

次のような値のリストを返す ajax リクエストがあります。

"[-5, 5, 5], [-6, 15, 15], [7, 13, 12]"

数字を持つJavaScript配列である必要があります:

[[-5, 5, 5], [-6, 15, 15], [7, 13, 12]]

「[」と「]」を「|」に置き換えようとしました '|' で分割 foreach アイテムを「,」で分割して配列に追加しますが、これはまったくエレガントではありません。

何か提案はありますか?

4

5 に答える 5

2

このソリューションは実際にはばかげています-JSON.parse他の人が言ったように絶対に使用してください-しかし、正規表現を楽しむために、ここに行きます:

function getMatches(regexp, string) {
  var match, matches = [];
  while ((match = regexp.exec(string)) !== null)
    matches.push(match[0]);
  return matches;
}

function parseIntArrays(string) {
  return getMatches(/\[[^\]]+\]/g, string)
    .map(function (string) {
      return getMatches(/\-?\d+/g, string)
        .map(function (string) { 
          return parseInt(string); 
        });
    });
}

parseIntArrays("[-5, 5, 5], [-6, 15, 15], [7, 13, 12]");
于 2013-10-17T05:03:14.847 に答える