使用连接字符串作为JavaScript对象属性名称
问题描述:
嗯,我需要从数组中获取所有值并将它们放入循环中,但是我无法将该值传递给对象的属性名称。任何想法如何做到这一点?使用连接字符串作为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'));
}
});
});
});
});
答
尝试更换
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
http://*.com/questions/2940424/valid-javascript-object-property-names ---但我承认,我不清楚你的问题是什么。 –
@MörreNoseshine我需要使用一个字符串作为对象的属性名称... –
那么对于这种情况下,我提供了链接......'a = {}; a [“/ *”] = 1' - 起作用,而'a = {“/ *”}'不起作用。 –