我有这个功能
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因为当我使用我当前的代码时,它会返回empty
答案 0 :(得分: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"])
答案 1 :(得分:1)
尽管Arun的回答有效,但它却在整个地方泄漏了全局。
通常,您希望保持全局空间清晰,以防止以后出现问题。
我可能会推荐:
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);
答案 2 :(得分:0)
这样应该可行
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示例