javascript-JS重命名对象键,同时保留其在对象中的位置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-JS重命名对象键,同时保留其在对象中的位置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1574字,纯文字阅读大概需要3分钟。
内容图文
![javascript-JS重命名对象键,同时保留其在对象中的位置](/upload/InfoBanner/zyjiaocheng/686/12172a8d276c426a9a109dce97fe040e.jpg)
编辑:提出了与reactjs组件相关的问题,但是下面的答案可以与任何js框架/代码一起使用.
我的组件具有如下状态属性:
const someObj = {
arr1: ["str1", "str2"],
arr2: ["str3", "str4"],
}
用户可以通过输入字段来编辑对象(键和值).
更改值时,我将其替换在同一索引中,然后保留其位置,并且用户将编辑保留在同一位置.
更改这样的值:
handleStrChange = (e, key, strIdx) => {
const obj = {...this.state.obj};
obj[key][strIdx] = e.target.value;
this.setState({
obj
})
}
问题是当用户更改密钥时,我无法重命名密钥,我需要删除它,然后使用新名称和旧值编写新密钥.然后obj的顺序改变,结构跳变.
像这样更改密钥:
handleKeyChange = (e, key) => {
const obj = {...this.state.obj};
obj[e.target.value] = obj[key]
delete obj[key];
this.setState({
obj
})
}
请看到一个有效的例子here
即使需要修改obj,如何保存结构?
还是有什么办法可以重命名密钥而不是删除和添加新密钥?
解决方法:
您可能需要考虑将键的数组减少到一个新的对象中.
为此,您还需要知道哪个键更改为什么.
>减少键的排列
>使用精简器检查密钥更改,并在必要时进行更改.
>将键值添加到对象
之后,您将拥有一个具有以前顺序的??对象,并且可能更改后的键仍处于相同位置
这样的事情可能会起作用(未经测试)
const changedKeyMap = {"previousKey": "newKey"};
const keys = Object.keys(this.state.obj);
const content = e.target.value;
const result = keys.reduce((acc, val) => {
// modify key, if necessary
if (!!changedKeyMap[val]) {
val = changedKeyMap[val];
}
acc[val] = content;
// or acc[val] = this.state.obj[val] ?
return acc;
}, {});
如您所见,您需要跟踪更改键(changedKeyMap)的方式.
reduce函数只是以正确的顺序遍历所有键,并将它们添加到新创建的对象中.如果更改了密钥,则可以在changedKeyMap中对其进行检查并替换.它仍然会在正确的位置
内容总结
以上是互联网集市为您收集整理的javascript-JS重命名对象键,同时保留其在对象中的位置全部内容,希望文章能够帮你解决javascript-JS重命名对象键,同时保留其在对象中的位置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。