我的页面上有几个下拉列表。根据这些下拉列表的选择,我想构建如下所示的结果Json对象:
{"list":{"city":["1","2","3"],"businessName":["City1","AnotherCity"]}}
下拉菜单事件:
$(".chosen-select").each(function () {
$id = this.id;
$value = $(this).val();
});
当然我希望这样做尽可能通用,因此我得到$ id(在我的情况下是“city”和“businessName”,但在另一页上可能会有所不同。
$value = $(this).val();
当然是所选值的数组,即:“[”1“,”2“,”3“];
我试过这个,但这不是我想要的
var jsonObj = {
list: []
};
$(".chosen-select").each(function () {
$id = this.id;
$value = $(this).val();
var obj = {};
obj[$id] = $value;
jsonObj.list.push(obj);
});
结果如下:
{"list":[{"city":["2","3"]},{"businessName":["KrakVenue1","KrakVenue3"]}]}
而不是我想要的。
我该怎么办? 感谢
答案 0 :(得分:2)
由于您希望列表成为对象,因此不要将其创建为数组。
var jsonObj = {
list: {}
};
$(".chosen-select").each(function () {
var id = this.id,
value = $(this).val();
jsonObj.list[id] = value;
});
演示
答案 1 :(得分:1)
jsonObj.list
应该是你想要的对象而不是数组,所以你不应该推动它。
if (!jsonObj.list.hasOwnProperty(id)) {
jsonObj.list[id] = value;
}
else {
// key already exists. What should you do with it?
// if `value` is another array, you can use `.concat`
}
似乎value
应该是一个数组,但它们是单独的值,并且您希望将它们视为数组,请使用:
if (!jsonObj.list.hasOwnProperty(id)) {
jsonObj.list[id] = [];
}
jsonObj.list[id].push(value);