javascript – 使用内部数组迭代数组并创建新对象 – AngularJS
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用内部数组迭代数组并创建新对象 – AngularJS,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3434字,纯文字阅读大概需要5分钟。
内容图文
我有一个从REST API中获取的对象…
我想循环遍历数组并从中创建对象/数组
这是阵列;
orderItem包含menu_modifier_groups,其中包含menu_modifier_items
orderItem – > menu_modifier_groups – > menu_modifier_items
orderItem: {
id: 159
name: Empanadas (Choice of 2)
description: Choice of Diced Beef; Spinach, Stilton and Onion; or Smoked Ham and Mozzarella
price: 700
available: 1
created_at: 2016-01-31 16:50:31
updated_at: 2016-01-31 16:50:31
menu_category_id: 41
restaurant_id: 11
menu_modifier_groups:
[ {
id: 9
name: Choose 2 Empanadas
instruction: null
min_selection_points: 2
max_selection_points: 2
force_selection: 1
created_at: 2016-02-01 01:03:35
updated_at: 2016-02-01 01:12:23
menu_item_id: 159
restaurant_id: 11
menu_modifier_items:
[ {
id: 34
name: Diced Beef
price: 0
created_at: 2016-02-01 01:04:08
updated_at: 2016-02-01 01:04:08
menu_modifier_group_id: 9
restaurant_id: 11
menu_item_id: 159
selected: true
} , {
id: 35
name: Smoked Salmon & Mozzarella
price: 0
created_at: 2016-02-01 01:04:37
updated_at: 2016-02-01 01:04:37
menu_modifier_group_id: 9
restaurant_id: 11
menu_item_id: 159
selected: true
} , {
id: 36
name: Stilton, Spinach and Onion
price: 0
created_at: 2016-02-01 01:05:05
updated_at: 2016-02-01 01:05:05
menu_modifier_group_id: 9
restaurant_id: 11
menu_item_id: 159
selected: false
} ]
} ]
}
从我从REST API收到的内容,我想要做的是将此orderItem转换为;
// the main item + menu_modifier_items(where selected = true) without menu_modifier_groups
$scope.mainItem =
{
id: 159
name: Empanadas (Choice of 2)
description: Choice of Diced Beef; Spinach, Stilton and Onion; or Smoked Ham and Mozzarella
price: 700
available: 1
created_at: 2016-01-31 16:50:31
updated_at: 2016-01-31 16:50:31
menu_category_id: 41
restaurant_id: 11
menu_modifier_items:
[ {
id: 34
name: Diced Beef
price: 0
created_at: 2016-02-01 01:04:08
updated_at: 2016-02-01 01:04:08
menu_modifier_group_id: 9
restaurant_id: 11
menu_item_id: 159
selected: true
} , {
id: 35
name: Smoked Salmon & Mozzarella
price: 0
created_at: 2016-02-01 01:04:37
updated_at: 2016-02-01 01:04:37
menu_modifier_group_id: 9
restaurant_id: 11
menu_item_id: 159
selected: true
} ]
}
所以我可以使用$http,如下所示;
$scope.addItem = function(orderItem) {
//transform orderItem here into mainItem
$http({
method: 'post',
url: "http://api.example.com/web/cart/item/add",
data: $.param({
'cartItem': $scope.mainItem
}),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data, status, headers, config) {
});
}
任何建议/指导表示赞赏.
解决方法:
像Lodash这样的javascript实用程序库可能会让您的生活更加轻松.但是这里有你如何用基本的javascript做到这一点.
// Build your array of modifierItems by looping through the menu_modifier_group entries and taking only the ones that have selected: true
var modifierItems = [];
for (var i = 0; i < orderItem.menu_modifier_groups.length; i++)
{
if (orderItem.menu_modifier_groups[i].selected.menu_modifier_items)
{
for (var j = 0; j < orderItem.menu_modifier_groups[i].menu_modifier_items.length; j++)
{
if(orderItem.menu_modifier_groups[i].menu_modifier_items[j].selected === true)
{
modifierItems.push(orderItem.menu_modifier_groups[i].menu_modifier_items[j]);
}
}
}
}
// Now get rid of menu_modifier_groups, and use the remaining orderItem object as your $scope.mainItem,
// and add the array of modifier items you built above as menu_modifier_items
delete orderItem.menu_modifier_groups;
$scope.mainItem = orderItem;
$scope.mainItem.menu_modifier_items = modifierItems;
// Now do your $http stuff
内容总结
以上是互联网集市为您收集整理的javascript – 使用内部数组迭代数组并创建新对象 – AngularJS全部内容,希望文章能够帮你解决javascript – 使用内部数组迭代数组并创建新对象 – AngularJS所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。