我正在建立一个有一些选项的javascript系统。系统从JSON中提取信息。根据选项我想触发数组对象的特定部分,我不想使用eval()
通常我会这样做。
$.each(data.data, function () {
console.log(this.images.small_image.src);
}
现在这样工作正常,直到我想使用变量来做,变量将替换“small_image”部分,可以是“large_image”,“scaled_image”等等。
所以我想做什么
var image_variable = 'small_image';
$.each(data.data, function () {
console.log(this.images. + image_variable + .src);
}
我不确定这是否可行,但希望有人对此有一些想法?
答案 0 :(得分:1)
不确定这是否是一个有效的问题,考虑到这是JavaScript的真正基础知识,但现在就去。
您可以通过在方括号[ 'key' ]
内传递键来读取对象值。
var image_variable = 'small_image';
$.each( data.data, function( ) {
console.log( this.images[ image_variable ].src );
} );
您应该确保首先定义密钥,但instanceof Object
左右。这样可以避免脚本中的错误,并使您能够扩展自己的错误处理程序,以解释用户出了什么问题。
if ( this.images[ image_variable ] instanceof Object ) { }
答案 1 :(得分:0)
使用string.replace。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
var image_variable = 'small_image';
$.each(data.data, function () {
console.log(this.images.src.replace(large_image, image_variable)); //something like that
}
答案 2 :(得分:0)
在JavaScript中,您可以通过字符串访问对象属性。话虽如此,这将完全相同:
this.images.small_image.src;
this[images.small_image].src;