Javascript 循环将数据添加到数组中,数据被覆盖
我试图循环向数组中添加数据,但带键的数据被覆盖Javascript 循环将数据添加到数组中,数据被覆盖,javascript,jquery,Javascript,Jquery,我试图循环向数组中添加数据,但带键的数据被覆盖 var minmax_数组=[]; $(“.room\u minmax\u div”)。每个(功能(索引、数据){ var room=$(this.data('room'); minmax_阵列[房间]=[]; }); $(“.room\u minmax\u div input”)。每个(功能(索引、数据){ //约会 var room=$(this.data('room'); var name=$(this.attr('name'); var值
var minmax_数组=[];
$(“.room\u minmax\u div”)。每个(功能(索引、数据){
var room=$(this.data('room');
minmax_阵列[房间]=[];
});
$(“.room\u minmax\u div input”)。每个(功能(索引、数据){
//约会
var room=$(this.data('room');
var name=$(this.attr('name');
var值=$(this.val();
如果(值=“”){
数值=0;
}
var obj={};
//Obj
obj[名称]=值;
minmax_阵列[房间]=obj;
});
minmax_json=minmax_数组;
log(minmax_json)代码>
房间类型:1号房间
分钟
马克斯
房间类型:房间2
分钟
马克斯
房间类型:3号房间
分钟
马克斯
首先,您需要创建一个JSON对象,而不是数组。因此,变量和第一级字段的初始化应按以下步骤进行
var minmax_array = {};
$(".room_minmax_div").each(function(index, data) {
var room = $(this).data('room');
minmax_array[room] = {};
});
然后,当您使用max
或min
值更新第二级对象时,您应该检查是否已经有对象分配给该键。如果是,则应该更新该对象,而不是指定一个全新的对象
$(".room_minmax_div input").each(function(index, data) {
//get date
var room = $(this).data('room');
var name = $(this).attr('name');
var value = $(this).val();
if(value == ''){
value = 0;
}
// If there is a value for minmax_array[room], use it as obj. Otherwise create an empty object
var obj = minmax_array[room] || {};
//Obj
obj[name] = value;
minmax_array[room] = obj;
});
然后您的输出将类似于下面的内容
{
Room1: {
max: "14",
min: "10"
},
Room2: {
max: "7",
min: "5"
},
Room3: {
max: "10",
min: "9"
}
}
请在问题中填写所有相关代码。用户不需要离开网站就可以理解您的问题。我无法发布代码,我不知道代码片段是什么(问题编辑器中的[]
按钮)。我为您编辑了它代码的输出不是您在问题中声称的,预期的输出不是有效的数组,您是指对象吗?@Rory McCrossan非常感谢@Ghassen Louhaichi我需要一些可以转换为json字符串的格式,这样数组或对象就可以了。