有“本地人”吗?修改对象属性的Javascript函数

Is there a "native" Javascript function that modifies an object property

本文关键字:本地人 属性 Javascript 对象 函数 修改      更新时间:2023-09-26

是否有一个本地JavaScript函数(或JavaScript库/模块)修改键的值,然后返回完整的对象?

这是我所做的:

function modifyJSON(jsob, key, val) {
    var newjsob = JSON.parse(JSON.stringify(jsob));
    newjsob[key] = val;
    return newjsob;
}

(当然,如果我想修改原始文件,我可以删除var newjsob...并直接使用jsob)

这可以工作,但是如果这种类型的功能已经在某个地方实现了,我宁愿使用它而不是自己编写。

你的标题有点误导人。你所做的是深度克隆一个现有对象,然后改变新对象的属性。

如果浅层克隆足够了,您可以使用Object.assign:

var update = {};
update[key] = val;
return Object.assign(jsob, update);

如果你需要深度克隆,我会检查ImmutableJS。当更新不可变数据结构上的任何字段时,将返回应用了更新的原始结构的克隆。

基本上,困难的部分是深度克隆。Lodash可以为你深度克隆对象。

https://lodash.com/docs/4.16.2 cloneDeep

function modifyJSON(jsob, key, val) {
    var newjsob = _.cloneDeep(jsob);
    newjsob[key] = val;
    return newjsob
}

获得新对象后,您可以随意修改对象的属性。

但是,要注意深度复制很慢。只有在必要的时候才使用它。

https://jsfiddle.net/38kscyxa/