0

私はこの機能を持っています

var globalvar = new Array();
function coor(coor1){

    for(i=0;i<=coor1.length;i++){
        exy = coor1[i].split(".");
        ex = exy[0].split("-");
        ey = exy[1].split("-");

        for(x=parseInt(ex[0]);x<=parseInt(ex[1]);x++){

            for(y=parseInt(ey[0]);y<=parseInt(ey[1]);y++){

                globalvar.push(ex[x]+"."+ey[y]);
            }
        }

    }
}

// execute function
coor(["5-7.8-9","1-2.3-4"]);

私が期待しているのは...

globalvar変数は配列にこの値を持ちます

globalvar = ["5.8","5.9","6.8","6.9","7.8","7.9","1.3","1.4","2.3","2.4"];

誰かがこのことを理解するのを手伝ってくれることを願っています... Y_Y coz現在のコードを使用すると、返されますempty

4

3 に答える 3

1

アルンの答えは機能しますが、グローバルがいたるところに漏れています。

一般に、後で問題が発生しないように、グローバル スペースをクリアしておく必要があります。

私はお勧めかもしれません:

function coor(c) {
  for(var i = 0, l = c.length; i < l; i++) {
    var xy = c[i].split('.')
      , x  = xy[0].split('-')
      , y  = xy[1].split('-');
    for(var xi = ~~x[0]; xi <= ~~x[1]; xi++) {
      for(var yi = ~~y[0]; yi <= ~~y[1]; yi++) {
        globalvar.push(xi + '.' + yi);
      }
    }
  }
}

ただし、最初からグローバル変数に関数を書き込まないようにすることをお勧めします。その場合、関数が結果を返すようにし、必要に応じてそれらの結果を処理できます。

例えば:

function coor(c) {
  var r = [];
  for(var i = 0, l = c.length; i < l; i++) {
    var xy = c[i].split('.')
      , x  = xy[0].split('-')
      , y  = xy[1].split('-');
    for(var xi = ~~x[0]; xi <= ~~x[1]; xi++) {
      for(var yi = ~~y[0]; yi <= ~~y[1]; yi++) {
        r.push(xi + '.' + yi);
      }
    }
  }
  return r;
}


var globalvar = [];
var results = coor(['5-7.8-9','1-2.3-4']);
globalvar = globalvar.concat(results);
于 2013-01-22T08:03:26.473 に答える
1

これでできるはず

var globalvar = new Array();
function coor(coor1){
    for(i=0;i<coor1.length;i++){ //Removed =
        exy = coor1[i].split(".");
        ex = exy[0].split("-");
        ey = exy[1].split("-");
        for(x=parseInt(ex[0]);x<=parseInt(ex[1]);x++){
            for(y=parseInt(ey[0]);y<=parseInt(ey[1]);y++){
                console.log(y)
                globalvar.push(x+"."+y); //need to use x & y not ex[x] & ey[y]
            }
        }
    }
}
coor(["5-7.8-9","1-2.3-4"])

フィドル

于 2013-01-22T07:40:09.943 に答える
0

このようなSthは機能するはずです

function floatRange(delim, rangedelim) {
    var result = [];
    var args = Array.prototype.splice.call(arguments, 2);
    for (var i = 0; i < args.length; i++) {
        var cur = args[i].toString().split(delim);
        console.log(cur)
        var floats = [cur[0].split(rangedelim), cur[1].split(rangedelim)];
        console.log(floats)
        for (var j = floats[0][0]; j <= floats[0][1]; j++) {

            for (var k = floats[1][0]; k <= floats[1][1]; k++) {
                result.push(Number(j + "." + k));


            }
        }
        console.log(result)
    }
    return result;
}
console.log(floatRange(".", "-", "4-6.5-8", "6-7.8-9")); //[4.5, 4.6, 4.7, 4.8, 5.5, 5.6, 5.7, 5.8, 6.5, 6.6, 6.7, 6.8, 6.8, 6.9, 7.8, 7.9]

JSBin の例を次に示します

于 2013-01-22T07:59:26.283 に答える