gpt4 book ai didi

javascript - 在对象中插入或替换值的方法

转载 作者:行者123 更新时间:2023-11-30 14:55:41 26 4
gpt4 key购买 nike

我有一个这样的对象

var obj2= {
'home' : {
'1' : {
'year' : '1999'
},
'2' : {
'year' : '2000'
'month' : '11'
},
},
'company' : {
'1' : {
'year' : '2010'
'month' : '2'
},
}
};

如果这个 key 链已经存在,我想在对象中添加更多的键或替换值,例如:

buss_type = "home",
type_id = "1",
date_type = "month",
value = "9"

var tmp_obj1 = {[buss_type]: {[type_id]: {[date_type]: value}}};

buss_type = "company",
type_id = "2",
date_type = "month",
value = "12"

var tmp_obj2 = {[buss_type]: {[type_id]: {[date_type]: value}}};

制作对象:

obj = {
'home' : {
'1' : {
'year' : '1999',
'month' : '9'
},
'2' : {
'year' : '2000',
'month' : '11'
},
},
'company' : {
'1' : {
'year' : '2020',
'month' : '10'
},
'2' : {
'month' : '12'
}
},
};

.push().concat() 等数组方法仅在末尾添加新键,而不是替换现有键的值。

是否有任何对象方法可以使其易于管理,或者我应该只使用循环并在添加新值或更改现有值之前检查所有键?

谢谢。

最佳答案

您可以为键取一个数组并保存最后一个键以供直接分配。

function setValue(object, path, value) {
var last = path.pop();
path.reduce(function (o, k) {
return o[k] = o[k] || {};
}, object)[last] = value;
}

var object = { home: { 1: { year: '1999' }, 2: { year: '2000', month: '11' } }, company: { 1: { year: '2010', month: '2' } } };

setValue(object, ["home", "1", "month"], "9");
setValue(object, ["company", "2", "month"], "12");

console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在对象中插入或替换值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47306579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com