添加对象到数组javascript和关联数组
Add objects to array javascript, and associative array?
我想创建数组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;
});
JavaScript中的"关联数组"就是简单的对象。我们通常称它们为"对象"或"映射",以避免与"数组"混淆(它们在JavaScript中并不是真正的数组,但现在让我们忽略它们)。
你想用一个空白对象初始化你的filters_array
:
var filters_array = {};
…然后在click处理程序中,为其添加一个条目,键为filter_group
变量的值,值为filter_value
变量中的值:
filters_array[filter_group] = filter_value;
例如,如果filter_group
的值为"foo"
, filter_value
的值为"bar"
,那么你最终会在filters_array
上得到一个名为foo
的属性,其值为"bar"
。然后,您可以通过以下几种方式访问该属性:
console.log(filters_array["foo"]); // "bar"
console.log(filters_array.foo); // "bar"
var x = "foo";
console.log(filters_array[x]); // "bar"
// Loop through all of the filter groups you've added
var key;
for (key in filters_array) {
// here, `key` will be `"foo"` (for instance)
console.log(filters_array[key]); // One of these will be "bar"
}
我想创建数组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};
并将其替换为该行!
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 具有关联数组数据集的D3.js表
- 后关联数组使用jquery ajax
- 返回一个关联数组,而不是mongoose中的文档数组
- 如何在 Angular JS 中从关联数组创建多个复选框
- 存储在变量中的关联数组中的访问键
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 关联数组,并使用父数组d作为selection.data()的源数组
- 获取关联数组的标签
- JavaScript:如何在最接近值的关联数组中查找键
- 单击时显示关联数组的元素
- 关联数组 - 使用图像滑块显示键值
- Javascript从关联数组中查找最低数字(气泡排序方法)
- AngularJS过滤器不适用于我的数据:关联数组
- 获取关联数组中当前函数的键
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 正在检查JavaScript中是否存在关联数组
- 二维对象/将数组关联到三维对象Javascript中