在另一个对象中重命名一个对象的键
Renaming keys of an object inside another object
我在尝试重命名另一个对象中一个对象的键时遇到了一些问题。我的对象结构如下:
Object {
json: Object {
String Title 2: Object {
2015-07-20: 0
2015-08-28: 0
2015-09-28: 0
}
}
}
我一直在玩弄 Underscore 的 MAP 函数,但是当我更改 json 键的值时,它也会删除那里的整个对象。我只想更改字符串 "String Title 2"。有比地图更好的方法吗?
我也想保持对象的整个结构不变。据我所知,最好的方法是将对象信息复制到另一个具有更改字符串的对象。对吗?
感谢您的帮助。
您不能重命名 属性,但您可以添加一个新的,其值与现有的相同,并删除旧的。
假设你真的有那个结构,它可以写成这样的对象初始化器:
var obj = {
json: {
"String Title 2": {
"2015-07-20": 0,
"2015-08-28": 0,
"2015-09-28": 0
}
}
};
那么你可以这样做:
// Add new
obj.json.newPropertyName = obj.json["String Title 2"];
// Remove old
delete obj.json["String Title 2"];
免费实例:
var obj = {
json: {
"String Title 2": {
"2015-07-20": 0,
"2015-08-28": 0,
"2015-09-28": 0
}
}
};
snippet.log("Before: " + JSON.stringify(obj));
// Add new
obj.json.newPropertyName = obj.json["String Title 2"];
// Remove old
delete obj.json["String Title 2"];
snippet.log("After: " + JSON.stringify(obj));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
这不太可能有关系,但如果访问此对象的属性绝对对性能至关重要,并且您发现了速度为 属性 的现实世界问题访问,你最好把旧的 属性 留在那里,不要使用它。在现代引擎上,使用 delete
从对象中删除属性会使 属性 访问它们的速度明显慢于不这样做的情况。但同样:担心它 if 和 when 你看到一个现实世界的问题。
我在尝试重命名另一个对象中一个对象的键时遇到了一些问题。我的对象结构如下:
Object {
json: Object {
String Title 2: Object {
2015-07-20: 0
2015-08-28: 0
2015-09-28: 0
}
}
}
我一直在玩弄 Underscore 的 MAP 函数,但是当我更改 json 键的值时,它也会删除那里的整个对象。我只想更改字符串 "String Title 2"。有比地图更好的方法吗?
我也想保持对象的整个结构不变。据我所知,最好的方法是将对象信息复制到另一个具有更改字符串的对象。对吗?
感谢您的帮助。
您不能重命名 属性,但您可以添加一个新的,其值与现有的相同,并删除旧的。
假设你真的有那个结构,它可以写成这样的对象初始化器:
var obj = {
json: {
"String Title 2": {
"2015-07-20": 0,
"2015-08-28": 0,
"2015-09-28": 0
}
}
};
那么你可以这样做:
// Add new
obj.json.newPropertyName = obj.json["String Title 2"];
// Remove old
delete obj.json["String Title 2"];
免费实例:
var obj = {
json: {
"String Title 2": {
"2015-07-20": 0,
"2015-08-28": 0,
"2015-09-28": 0
}
}
};
snippet.log("Before: " + JSON.stringify(obj));
// Add new
obj.json.newPropertyName = obj.json["String Title 2"];
// Remove old
delete obj.json["String Title 2"];
snippet.log("After: " + JSON.stringify(obj));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
这不太可能有关系,但如果访问此对象的属性绝对对性能至关重要,并且您发现了速度为 属性 的现实世界问题访问,你最好把旧的 属性 留在那里,不要使用它。在现代引擎上,使用 delete
从对象中删除属性会使 属性 访问它们的速度明显慢于不这样做的情况。但同样:担心它 if 和 when 你看到一个现实世界的问题。