2015-05-19 161 views
2

嗯,我需要从数组中获取所有值并将它们放入循环中,但是我无法将该值传递给对象的属性名称。任何想法如何做到这一点?使用连接字符串作为JavaScript对象属性名称

var functionCases = [ 
    "functions", 
    "document.ready", 
    "window.load", 
    "document.scroll", 
    "window.resize" 
]; 

functionCases.forEach(function(i){ 
    gulp.src(bermuda()) 
    .pipe(gfi({ 
     "/* "+ i + " */": "generator/assets/js/" + i + ".js" 
    })) 
    .pipe(gulp.dest('generator/assets/js')); 
}); 

的问题是在这里:"/* "+ i + " */",JavaScript不认识到这一点作为对象属性的名称...

这里是我的整个咕嘟咕嘟代码:

var gulp = require('gulp'); 
var sass = require('gulp-sass'); 
var autoprefixer = require('gulp-autoprefixer'); 
var concat = require('gulp-concat'); 
var gfi = require("gulp-file-insert"); 
var fs = require('fs'); 

gulp.task('modules', function() { 

    var bermuda = function(){ 
     var fileExist = fs.existsSync("generator/assets/js/modules.js"); 
     if (fileExist == true) { 
      var source = "generator/assets/js/modules.js"; 
      console.log("existe"); 
     } else{ 
      var source = "js/modules/modules.js"; 
      console.log("não existe"); 
     } 
     return source; 
    } 

    var functionCases = [ 
     "functions", 
     "document.ready", 
     "window.load", 
     "document.scroll", 
     "window.resize" 
    ]; 

    functionCases.forEach(function(i){ 

     console.log(i); 

     gulp.src('js/modules/**/' + i + '.js') 
      .pipe(concat('' + i + '.js')) 
      .pipe(gulp.dest('generator/assets/js')) 
      .on('end',function(){ 
       fs.exists("generator/assets/js/" + i + ".js", function(exists) { 
        if (exists) { 
         var gfiInput = {}; 
         gfiInput["/* "+ i + " */"] = "generator/assets/js/" + i + ".js"; 
         gulp.src(bermuda()) 
          .pipe(gfi(gfiInput)) 
          .pipe(gulp.dest('generator/assets/js')); 
        } 
       }); 
      }); 

    }); 
}); 
+0

http://stackoverflow.com/questions/2940424/valid-javascript-object-property-names ---但我承认,我不清楚你的问题是什么。 –

+0

@MörreNoseshine我需要使用一个字符串作为对象的属性名称... –

+2

那么对于这种情况下,我提供了链接......'a = {}; a [“/ *”] = 1' - 起作用,而'a = {“/ *”}'不起作用。 –

回答

2

尝试更换

functionCases.forEach(function(i){ 
    gulp.src(bermuda()) 
    .pipe(gfi({ 
     "/* "+ i + " */": "generator/assets/js/" + i + ".js" 
    })) 
    .pipe(gulp.dest('generator/assets/js')); 
}); 

functionCases.forEach(function(i){ 
    var gfiInput = {}; 
    gfiInput["/* "+ i + " */"] = "generator/assets/js/" + i + ".js"; 
    gulp.src(bermuda()) 
     .pipe(gfi(gfiInput)) 
     .pipe(gulp.dest('generator/assets/js')); 
}); 
+0

的作品,但现在我有另一个问题,吞咽不尊重每个循环项目的顺序,我做了循环只是想这会解决这个问题... –

+0

@CaioKawasaki你可以尝试问另一个问题,让有更多经验的人可以帮助你 – howderek

相关问题