如何在javascript中放置另一个json数据
我正在构建laravelblade php文件。 我需要为日历计划生成json数据。 但我不能将每个数据都放到json中。 这一结果是所有相同的记录 代码如下所示…如何在javascript中放置另一个json数据,javascript,php,arrays,json,laravel-blade,Javascript,Php,Arrays,Json,Laravel Blade,我正在构建laravelblade php文件。 我需要为日历计划生成json数据。 但我不能将每个数据都放到json中。 这一结果是所有相同的记录 代码如下所示… @foreach($room_rates as $key=>$room_rate) var roomRate_object = { id: "{{$room_rate->sup_hotel_room_rates_list_id}}", roomRate_name: "{{
@foreach($room_rates as $key=>$room_rate)
var roomRate_object = {
id: "{{$room_rate->sup_hotel_room_rates_list_id}}",
roomRate_name: "{{$room_rate->room->room_name}}",
roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
roomRate_type: "2",
roomRate_value: "3",
start: "{{$room_rate->from_date}}",
end: "{{$room_rate->to_date}}",
status: "{{$room_rate->status}}",
allotmant: "{{1}}",
night_stayval: "{{$room_rate->min_night_stay}}",
};
console.log("kkk roomRate_object")
console.log(roomRate_object)
roomRate_object.id = roomRate_object.id + "1";
roomRate_object.roomRate_type = "1";
roomRate_object.roomRate_value = "{{$room_rate->adult_rate}}";
realize_schedule.push(roomRate_object);
roomRate_object.id = roomRate_object.id + "2";
roomRate_object.roomRate_type = "2";
roomRate_object.roomRate_value = "{{$room_rate->double_rate}}";
realize_schedule.push(roomRate_object);
roomRate_object.id = roomRate_object.id + "3";
roomRate_object.roomRate_type = "3";
roomRate_object.roomRate_value = "{{$room_rate->triple_rate}}";
realize_schedule.push(roomRate_object);
roomRate_object.id = roomRate_object.id + "4";
roomRate_object.roomRate_type = "4";
roomRate_object.roomRate_value = "{{$room_rate->quad_rate}}";
realize_schedule.push(roomRate_object);
roomRate_object.id = roomRate_object.id + "5";
roomRate_object.roomRate_type = "5";
roomRate_object.roomRate_value = "{{$room_rate->child_rate}}";
realize_schedule.push(roomRate_object);
@endforeach
结果如下。
这很奇怪。
请帮帮我
我对此非常担心。
谢谢您的时间。我想您对更改参考资料有点困惑。在javascript中,当创建对象时,如果尝试修改对象的值,则会更改内存中的值。范例
var obj = {name:'test'};
var b = obj;
b.name = 'test2';
如果您控制台输出,那么obj和b都将有test2,因为javascript将更改内存中的值,因为在varb=obj行上,它只是使b指向obj使用的相同内存
为了摆脱这种技术,我们根据需要使用深度克隆或浅层克隆
您有很多选择,其中一个可以是您只需创建多个具有不同名称的对象
用于制作新对象
function getObj($room_rate,id,type,value){
return {
id: "{{$room_rate->sup_hotel_room_rates_list_id}}"+ id,
roomRate_name: "{{$room_rate->room->room_name}}",
roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
roomRate_type: type,
roomRate_value: value,
start: "{{$room_rate->from_date}}",
end: "{{$room_rate->to_date}}",
status: "{{$room_rate->status}}",
allotmant: "{{1}}",
night_stayval: "{{$room_rate->min_night_stay}}",
}
}
创建如上所述的函数
就这样说吧
realize_schedule.push(getObj($room_rate,"1","{{$room_rate->adult_rate}}"));
上面这段代码只是一个示例,只是为了说明如何解决问题,您必须使用每个对象来解决这个问题
var roomRate_object = {
id: "{{$room_rate->sup_hotel_room_rates_list_id.'1'}}",
roomRate_name: "{{$room_rate->room->room_name}}",
roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
roomRate_type: "1",
roomRate_value: "{{$room_rate->adult_rate}}",
start: "{{$room_rate->from_date}}",
end: "{{$room_rate->to_date}}",
status: "{{$room_rate->status}}",
allotmant: "{{1}}",
night_stayval: "{{$room_rate->min_night_stay}}",
};
realize_schedule.push(roomRate_object);
var roomRate_object = {
id: "{{$room_rate->sup_hotel_room_rates_list_id.'2'}}",
roomRate_name: "{{$room_rate->room->room_name}}",
roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
roomRate_type: "2",
roomRate_value: "{{$room_rate->double_rate}}",
start: "{{$room_rate->from_date}}",
end: "{{$room_rate->to_date}}",
status: "{{$room_rate->status}}",
allotmant: "{{1}}",
night_stayval: "{{$room_rate->min_night_stay}}",
};
realize_schedule.push(roomRate_object);
var roomRate_object = {
id: "{{$room_rate->sup_hotel_room_rates_list_id.'3'}}",
roomRate_name: "{{$room_rate->room->room_name}}",
roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
roomRate_type: "3",
roomRate_value: "{{$room_rate->triple_rate}}",
start: "{{$room_rate->from_date}}",
end: "{{$room_rate->to_date}}",
status: "{{$room_rate->status}}",
allotmant: "{{1}}",
night_stayval: "{{$room_rate->min_night_stay}}",
};
realize_schedule.push(roomRate_object);
必须使用另一个对象将另一个数据放入json。 所以一定要做下面的代码。 我为你做的
@foreach($room_rates as $key=>$room_rate)
@for ($i = 1; $i <= 5; $i++)
var roomRate_object = {
id: "{{$room_rate->sup_hotel_room_rates_list_id}}",
roomRate_name: "{{$room_rate->room->room_name}}",
roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
roomRate_type: "{{$i}}",
roomRate_value: "3",
start: "{{$room_rate->from_date}}",
end: "{{$room_rate->to_date}}",
status: "{{$room_rate->status}}",
allotmant: "{{1}}",
night_stayval: "{{$room_rate->min_night_stay}}",
};
@switch($i)
@case(1)
roomRate_object.roomRate_value = "{{$room_rate->adult_rate}}";
@break
@case(2)
roomRate_object.roomRate_value = "{{$room_rate->double_rate}}";
@break
@case(3)
roomRate_object.roomRate_value = "{{$room_rate->triple_rate}}";
@break
@case(4)
roomRate_object.roomRate_value = "{{$room_rate->quad_rate}}";
@break
@case(5)
roomRate_object.roomRate_value = "{{$room_rate->child_rate}}";
@break
@default
<span>Something went wrong, please try again</span>
@endswitch
realize_schedule.push(roomRate_object);
@endfor
console.log("kkk roomRate_object")
console.log(roomRate_object)
@endforeach
@foreach($key=>$room\u rate)
@为了($i=1;$i请修复您的代码示例,它缺少foreach start.Yes。抱歉。我将修复。您正在重复将同一对象推送到数组中。每当您更改原始对象时,数组中对该对象的所有引用都将更改。相反,每次声明不同的对象。更好的是,您可以让PHP生成此数据没有这些重复的东西。你可以引用它。来源是我可以在Laravel上使用它?所以我必须制作每个json对象?编辑引用$room_rate的答案在foreach中是可变的。所以它可以在这个函数中使用?是的,根据语言,你可以将任何东西传递给函数,无论它是否在函数中。a这取决于正确的语法。我已经在javascript的基础上给了你答案,但是对于将变量传递给函数,可能需要一个不同的PHP语法,但是我不确定,所以没有好的方法吗?无论如何,是的。你应该使用另一个对象。谢谢。我认为这很好。这很好。你好。可以吗我用一个对象来代替它?我的意思是,如果不将变量重新定义为roomRate_objectNo,你应该重新定义它。因为它是对象的地址。谢谢。我需要你的帮助。你有日历计划js方面的经验吗?