Javascript:如何循环和更改键名?
如何更改键名但为其值设置键 例如,我存储了以下json数据:Javascript:如何循环和更改键名?,javascript,for-loop,Javascript,For Loop,如何更改键名但为其值设置键 例如,我存储了以下json数据: { particles: { name: 'particles', values: [ [Object], [Object], [Object], [Object], [Object] ] }, timestamps: { name: 'timestamps', values: [ [Object], [Object], [Object], [Object], [Object] ] } }
{ particles:
{ name: 'particles',
values: [ [Object], [Object], [Object], [Object], [Object] ] },
timestamps:
{ name: 'timestamps',
values: [ [Object], [Object], [Object], [Object], [Object] ] }
}
我将循环此输入并更改键:
{ particles: 'particle', timestamps: 'timestamp' }
将粒子
更改为粒子
并将时间戳
更改为时间戳
我的尝试:
for (var property in data) {
stored[data[property]] = stored[property].values;
stored[property].name = data[property];
}
我只更改了存储数据中的名称
,但没有更改键名称
有什么想法吗?通过获取旧属性值分配新属性,然后删除旧属性
var数据={
粒子:{
名称:“粒子”,
值:[]
},
时间戳:{
名称:'时间戳',
值:[]
}
}
var newK={
粒子:“粒子”,
时间戳:“时间戳”
};
//获取所有对象键并对其进行迭代
Object.keys(newK).forEach(function(ele){
//基于旧属性值指定对象属性
数据[newK[ele]]=数据[ele];
//更新名称属性
数据[newK[ele]]。名称=newK[ele];
//删除旧对象属性
删除数据[ele];
})
控制台日志(数据)
您可以使用JSON将对象
转换为字符串
。字符串化
,然后替换出现的粒子
或时间戳
(str.replace(/particles/g,“particle”)
)。最后,使用JSON.parse(str)
将字符串转换回对象
NB:为确保您不会更改除按键以外的任何其他数据:
str.replace(/{"particles":{"name":"particles"/g, '{"particle":{"name":"particle"')
可以通过迭代数据、创建新键和删除旧键来实现
例如
首先必须使用delete
语句删除键,然后可以使用defineProperty
方法使用Object
类的Static方法添加新属性。这里是示例代码
var data={ particles: 'particle', timestamps: 'timestamp' };
for(var k in data){
document.write(k+":"+data[k]+"<br/>");
}
if(data.hasOwnProperty("particles")){
value=data["particles"];
delete data["particles"];
Object.defineProperty(data,"particle",{
value: value,
writable: true,
enumerable: true,
configurable: true,
});
}
if(data.hasOwnProperty("timestamps")){
value=data["timestamps"];
delete data["timestamps"];
Object.defineProperty(data,"timestamp",{
value: value,
writable: true,
enumerable: true,
configurable: true,
});
}
document.write("<br/>new values <br/>");
for(var k in data){
document.write(k+":"+data[k]+"<br/>");
}
var data={particles:'particle',timestamp:'timestamp'};
for(数据中的var k){
文件。写入(k+“:“+数据[k]+”
);
}
if(data.hasOwnProperty(“粒子”)){
值=数据[“粒子”];
删除数据[“粒子”];
Object.defineProperty(数据,“粒子”{
价值:价值,
可写:对,
可枚举:正确,
对,,
});
}
if(data.hasOwnProperty(“时间戳”)){
值=数据[“时间戳”];
删除数据[“时间戳”];
Object.defineProperty(数据,“时间戳”{
价值:价值,
可写:对,
可枚举:正确,
对,,
});
}
文档。写入(“
新值
”);
for(数据中的var k){
文件。写入(k+“:“+数据[k]+”
);
}
快乐编码!!!
:)删除
旧属性,然后添加新属性。正在尝试生成工作解决方案。是否要显示数据中的内容?一个子集就好了。可能是
var data={ particles: 'particle', timestamps: 'timestamp' };
for(var k in data){
document.write(k+":"+data[k]+"<br/>");
}
if(data.hasOwnProperty("particles")){
value=data["particles"];
delete data["particles"];
Object.defineProperty(data,"particle",{
value: value,
writable: true,
enumerable: true,
configurable: true,
});
}
if(data.hasOwnProperty("timestamps")){
value=data["timestamps"];
delete data["timestamps"];
Object.defineProperty(data,"timestamp",{
value: value,
writable: true,
enumerable: true,
configurable: true,
});
}
document.write("<br/>new values <br/>");
for(var k in data){
document.write(k+":"+data[k]+"<br/>");
}