【发布时间】:2016-05-07 06:32:43
【问题描述】:
我有 2 个对象数组。第一个是一组经理。第二个是从第一个数组中选择的管理器数组。不同的是我添加了一个属性selected: true。我现在需要用选定的经理替换第一个数组中的经理。我正在使用我创建的 AngularJS 服务来执行此操作。我确信有更简单的解决方案,所以我愿意接受建议。 JavaScript、jQuery、lodash、LINQ.js 都不错。
我有一个 plunker,我已经显示了我需要的结果。请注意没有selected:true 属性的经理。
var app = angular.module("mainModule", []);
var MainController = function($scope, service) {
var eventUsers = [
{
"event_Users_ID":1009,"event_ID":11,"user_ID":"15e640c1-a481-4997-96a7-be2d7b3fcabb"
},{
"event_Users_ID":1010,"event_ID":11,"user_ID":"250a19be-e661-4c04-9a50-c84b0e7349b7"
},{
"event_Users_ID":1011,"event_ID":11,"user_ID":"4cada7f0-b961-422d-8cfe-4e96c1fc11dd"
},{
"event_Users_ID":1013,"event_ID":11,"user_ID":"a3125317-5deb-426d-bbb1-06d3bd4ebaa6"
}];
var managers = [
{
"id": "15e640c1-a481-4997-96a7-be2d7b3fcabb",
"fullName": "Kul Srivastva"
},{
"id": "250a19be-e661-4c04-9a50-c84b0e7349b7",
"fullName": "Todd Brothers"
}, {
"id": "4cada7f0-b961-422d-8cfe-4e96c1fc11dd",
"fullName": "Rudy Sanchez"
}, {
"id": "79823c6d-de52-4464-aa7e-a15949fb25fb",
"fullName": "Mike Piehota",
}, {
"id": "a3125317-5deb-426d-bbb1-06d3bd4ebaa6",
"fullName": "Nick Broadhurst"
}];
$scope.result = service.eventUserMatch(eventUsers, managers);
};
function service() {
var vm = this;
vm.eventUserMatch = function (eventUsers, managers) {
var arry = [];
arry = $.map(eventUsers, function (eventUser) {
var manager = $.grep(managers, function (user) {
return user.id === eventUser.user_ID;
})[0];
eventUser.id = manager.id;
eventUser.fullName = manager.fullName;
eventUser.selected = true;
return eventUser;
});
return arry;
};
}
app.controller("MainController", MainController);
app.service('service', service);
【问题讨论】:
-
非常混乱的问题描述。您要解决的更高级别的用例和问题是什么?
-
你试过什么?没有选择的经理怎么办:true?????您说“请注意没有 'selected:true' 属性的经理”但没有解释这是关于什么的。
-
是的,抱歉,我很难寻求帮助,因为我无法很好地解释。给我一分钟,我会解释整体情况
-
我想我明白了您要完成的工作....您可以遍历新的 Selected Managers 数组并使用 lodash 的 findByIndex 方法在 Selected Manager Array 中搜索每个经理第一个管理器数组,如果找到索引,将第一个数组中的管理器替换为第二个数组中循环当前目标的管理器? lodash.com/docs#findIndex
-
据我了解您想要实现的目标:循环遍历
eventUsers,如果eventUsers[i].user_ID等于managers[j].id,则将属性"selected" : true添加到managers[j]。对吗?
标签: javascript jquery angularjs lodash linq.js