我有一个如下所示的javascript对象:
selectedUsers.push({
qid : qid,
first : $(this).data('emp_first'),
last : $(this).data('emp_last'),
department : $(this).data('emp_dept'),
ntid : $(this).data('emp_ntid'),
supFirst : $(this).data('emp_sup_first'),
supLast : $(this).data('emp_sup_last'),
supNTID : $(this).data('emp_sup_ntid'),
title : ($(this).data('emp_title') ? $(this).data('emp_title') : 'N/A'),
location: ($(this).data('emp_location') ? $(this).data('emp_location') : 'N/A'),
skillset : ($(this).data('emp_skillset') ? $(this).data('emp_skillset') : 'N/A'),
departmentID : $(this).data('emp_dept_id'),
titleID : $(this).data('emp_title_id'),
regionID : $(this).data('emp_region_id'),
instances : ($(this).data('emp_instances') != '' ? $(this).data('emp_instances').split(',') : '')
});
在我的网页上执行操作时,我需要更新此对象中departmentID
的值。
但是,我需要为对象中的特定结果执行此操作。
首先,我需要找到selectedUsers.qid = 'bob123'
的结果,然后手动设置departmentID
的值。
为了编辑特定密钥的值,搜索此结果的最佳方法是什么?
答案 0 :(得分:4)
是否可以在" selectedUsers"中保存对象。所以" qid"是他们的关键?我假设,qid是唯一值。
selectedUsers = {};
selectedUsers[qid] = {
first : $(this).data('emp_first'),
last : $(this).data('emp_last'),
department : $(this).data('emp_dept'),
ntid : $(this).data('emp_ntid'),
supFirst : $(this).data('emp_sup_first'),
supLast : $(this).data('emp_sup_last'),
supNTID : $(this).data('emp_sup_ntid'),
title : ($(this).data('emp_title') ? $(this).data('emp_title') : 'N/A'),
location: ($(this).data('emp_location') ? $(this).data('emp_location') : 'N/A'),
skillset : ($(this).data('emp_skillset') ? $(this).data('emp_skillset') : 'N/A'),
departmentID : $(this).data('emp_dept_id'),
titleID : $(this).data('emp_title_id'),
regionID : $(this).data('emp_region_id'),
instances : ($(this).data('emp_instances') != '' ? $(this).data('emp_instances').split(',') : '')
}
然后您需要做的就是
selectedUsers['bob123'].departmentID = yourNewValue;
如果不......
然后你必须循环整个数组(selectedUsers),直到找到qid与你的搜索匹配的数组。
for (var index=0, limit=selectedUsers.length; index < limit; ++index) {
if(selectedUsers[index].qid == "bob123"){
selectedUsers[index].deparmentID = "yourvalue";
break;
}
}
答案 1 :(得分:0)
我假设这一切都发生在客户端而不是某些数据存储中。在这种情况下,我会调查lodash.js库 - 特别是find
方法:
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.find(users, function(o) { return o.age < 40; });
// →
object for 'barney'
所以在你的情况下,你会有像
这样的东西var user = _.find(selectedUsers, function (user) {user.qid === searchId; });
user.departmentID = someOtherId;
// whatever else you need to do
答案 2 :(得分:0)
用户underscore.js find功能
例如:
std::function<void()> f = [fu=fu.share()]{ /* code */ };
var user = _.find(selectedUsers, function (item) { return item.departmentID === deartmentID});
答案 3 :(得分:0)
假设selectedUsers
是一个数组,你可以这样做:
function setSelectedUsersDepartment(qid, departmentID) {
for (var i in selectedUsers) {
var user = selectedUsers[i];
if (user.qid === qid) {
user.departmentID = departmentID;
}
}
}
或者,如果您可以使用ES6 Array.find功能(没有IE支持):
function setSelectedUsersDepartment (qid, newDepartmentID) {
var user = selectedUsers.find(user => user.qid === qid);
if (user !== undefined) {
user.departmentID = newDepartmentID;
}
}
如果你想为bob设置departmentID,你可以调用这个函数
setSelectedUsersDepartment('bob123', 'new_departmentID');