使用javascript更改对象数组中的键值?

时间:2016-05-09 18:31:09

标签: javascript jquery arrays object

我正在构建一个允许客户更改信息的页面,然后在接受之前将其传递给管理团队进行验证。我试图保持表单动态只传递客户更改的信息。我正在使用下面的函数来创建一个对象数组:

$('input, textarea, select').change(function(){
    var key = $(this).attr('name');
    var obj = {};
    obj[key] = $(this).val();
    myArray.push(obj);
});

哪个工作正常,但是今天我注意到,当多次更改字段时,它创建了多个具有相同名称的对象。

我的问题是如何找到动态的密钥并更改数组中存在的值?

我尝试使用:

$.each(myArray, function( key, value ) {
    console.log(key, value);
});

但是这会输出索引然后输出完整的对象,我需要找到对象的键,然后在值已经存在的情况下更改它。

1 个答案:

答案 0 :(得分:1)

变量myArray是一个数组而不是一个对象,因此key只是数组中对象的索引。

检查具有特定键的对象是否存在,

function getObjWithKey(myArray, key){
   var retVal;
   $.each(myArray, function(index, obj) {
       if(key != undefined && obj[key]){
           retVal = obj;
           return false;
       }
   });
   return retVal;        
}