2016-05-02 11 views
0

私は以下のように見えるjavascriptオブジェクトがあります。アクションは、私のページに取られた場合アップデート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の値を手動で設定する必要があります。

特定のキーの値を編集するためにこの結果を検索するにはどうすればよいでしょうか?

答えて

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; 
    } 
} 
0

私はこれがすべてクライアントで起こっていて、一部のデータストアでは起こっていないと仮定しています。

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 
0

ユーザーunderscore.js find機能

例のようなものを持っているでしょう。その場合は、私はlodash.js library-、具体的find方法になります:
var user = _.find(selectedUsers, function (item) { return item.departmentID === deartmentID});
user.departmentID = yourNewValue;

0

selectedUsersが配列であると仮定すると、あなたはこのような何かを行うことができ:あなたがしたい場合

function setSelectedUsersDepartment (qid, newDepartmentID) { 
    var user = selectedUsers.find(user => user.qid === qid); 
    if (user !== undefined) { 
     user.departmentID = newDepartmentID; 
    } 
} 

function setSelectedUsersDepartment(qid, departmentID) { 
    for (var i in selectedUsers) { 
     var user = selectedUsers[i]; 
     if (user.qid === qid) { 
      user.departmentID = departmentID; 
     } 
    } 
} 

をそれとも、ES6 Array.find機能(なしIEのサポート)を使用することができる場合bobのdepartmentIDを設定するには、このような関数を呼び出します。

setSelectedUsersDepartment('bob123', 'new_departmentID'); 
関連する問題