更新对象属性而无需重写

时间:2018-11-15 08:26:00

标签: javascript object

我有一个方法,该方法使用两个参数@EnableJpaRepositories作为属性名称,并使用key作为属性值。当我使用它时,我想更新value并在其中添加尽可能多的值,就像我调用setData方法一样。我不需要使用相同的data[key]重写值,而是更新它并添加一个新值,因此最终对象可以如下所示:

key

当前实现:

{
    patients:
       formValue: […],
       filtersValue: {}
}

5 个答案:

答案 0 :(得分:1)

解决方案是:

setData(key, value) {
  this.data[key] = { ...this.data[key], ...value };
}

答案 1 :(得分:0)

像这样使用:

const data = {}

setData(key, value) {
  Object.assign(data, {[key]: value});
}

顺便说一句,您可以像这样简单地设置数据:

setData(key, value) {
  data[key] = value
}

答案 2 :(得分:0)

您已经提到要添加与调用setData一样多的值。听起来像是阵列工作。

您可以使用以下代码:

function setData(targetObj, propName, valueToAdd){

    if(typeof targetObj[propName] === 'undefined'){
        targetObj[propName] = [];
    }
    if(Array.isArray(targetObj[propName])){
        targetObj[propName].push(valueToAdd);
    }else{
         console.log('property '+propName +' already exists and is not an array');
    }
}

答案 3 :(得分:0)

您要执行的操作是实现HashMap或Dictionary。

我会这样做:

function setData(key, value) 
{
    if (data[key])
        data[key].push(value)
    else  
        data[key] = [ value ]
}

答案 4 :(得分:-1)

检查此解决方案

const data = {}
var fun = (key, value)=>{

data[key] = value;
}
fun('kk',123);
console.log(data);