我想创建数组filters_array
,我在控制台中注意到的第一件事是无法找到filter_group,这是保存对象的正确方法吗?
第二,在第二次点击时我希望数组增长,但此时它只会被覆盖,我做错了什么?
//
var filters_array;
//Ajax call to filter movies, grab them and reload container
$(".option-set a").on("click", function(){
var filter_value = $(this).data("filter-value");
var filter_group = $(this).parents("ul").data("filter-group");
filters_array = {filter_group : filter_value};
console.dir(filters_array);
$.ajax({
url: templatePath + "getmovies.php",
type: "GET",
data: "",
cache: false,
success: function (data){
console.dir("ajax call success!");
}
});
return false;
});
答案 0 :(得分:0)
"关联数组"在JavaScript中只是对象。我们通常称他们为#34;对象"或者"映射",以避免将它们与"数组"混淆(JavaScript中aren't really arrays,但暂时忽略它。)
您想要使用空白对象初始化filters_array
:
var filters_array = {};
...然后在点击处理程序中添加一个条目,其中键是filter_group
变量的值,值是filter_value
变量中的值:
filters_array[filter_group] = filter_value;
例如,如果filter_group
的值为"foo"
且filter_value
的值为"bar"
,那么您最终会在{{1}上找到属性名为filters_array
的{{1}}值为foo
。然后,您可以通过多种方式访问该属性:
"bar"
答案 1 :(得分:0)
我想创建数组filters_array,我在控制台中注意到的第一件事是无法找到filter_group,这是保存对象的正确方法吗?
是的,这是正确的方法,但是你无法从控制台看到它,它是在函数范围内声明的。但是如果你需要从外面访问它,你可以这样做:
var filters_array, filter_value, filter_group; //hoisted here
//Ajax call to filter movies, grab them and reload container
$(".option-set a").on("click", function(){
filter_value = $(this).data("filter-value");
filter_group = $(this).parents("ul").data("filter-group");
filters_array = {filter_group : filter_value};
console.dir(filters_array);
$.ajax({
url: templatePath + "getmovies.php",
type: "GET",
data: "",
cache: false,
success: function (data){
console.dir("ajax call success!");
}
});
return false;
});
第二,在第二次点击时我希望数组增长,但此时它只会被覆盖,我做错了什么?
嗯,这很简单,你要再次初始化它,每次都要为它分配一个新对象,你必须这样做:
filters_array[filter_group] = filter_value;
将filters_array
空对象分配到之后的功能范围。显然,您需要删除filters_array = {filter_group : filter_value};
并将其替换为该行!