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

标签 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);
});

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

最佳答案

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

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

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

关于javascript - 使用javascript更改对象数组中的键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122966/

相关文章:

javascript - 发送键不会触发按键向上或按键按下

arrays - powershell 返回 1 个单个元素而不是数组

javascript - 原型(prototype)继承为什么子对象不继承父对象的方法?

javascript - React - 当按钮增加并在另一个页面中呈现结果时增加计数器的最佳方法?

php - 是否有任何代码库可以验证/将博客评论转换为严格的 XHTML?

ios - 重复数字数组

javascript - 按另一个对象对对象(字符串)进行排序

javascript - 两个不同的链接显示/隐藏具有两个 ID 的 div。如何?

javascript - ng-show 未正确更新

jquery - 在文档准备好时触发 jQuery 更改函数