如何使用JavaScript重命名对象键?

JavaScript不提供内置函数来重命名对象键,那么如何重命名对象键?下面本篇文章就来给大家介绍一下在JavaScript中重命名对象键的方法,希望对大家有所帮助。

在JavaScript中,对象用于存储各种数据的集合,是属性的集合;属性是一个“key:value”对。其中key(键)称为“属性名”,用于标识值。下面介绍重命名对象键的方法。

方法一:通过简单的变量赋值来重命名对象

在分配了一个或多个变量之后,我们将删除旧的键值对并打印新的键值对。

语法:

obj['New key'] = obj['old key'];

注意:通过简单的变量赋值来重命名对象可以应用于多个键值对。

例:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title>javascript:对象重命名键</title>
	</head>

	<body>
		<p>点击重命名对象键</p>
		<button type="button" onclick="rename()"> 
                   重命名
        </button>

		<script>
			var capitals = [{ // 创建对象“capital”
				"Burma": "Naypyitaw" // key "Burma" 和 value "Naypitaw" 
			}];
			console.log(capitals);

			function rename() { // 单击按钮时要重命名的函数
				capitals = capitals.map(function(obj) {
					obj['Myanmar'] = obj['Burma']; // 分配新键
					delete obj['Burma']; // 删除旧键
					return obj;
				});
				console.log(capitals);
			}
		</script>
	</body>

</html>

效果图:

1.gif

方法二:使用defineProperty()来重命名对象

通过利用defineProperty()来操作对象的属性来重命名给定的对象键。

defineProperty():

此静态方法用于定义对象的新属性或修改现有属性,并返回该对象。它接受3个参数。它们分别是:要修改的对象,键的名称和描述属性。

语法:

Object.defineProperty(obj, key, description)

例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>javascript:对象重命名键</title>
	</head>
	<body>
		<p>点击重命名对象键</p>
		<button type="button" onclick="rename()"> 重命名</button>

		<script>
			var capitals = [{ // 创建对象'capital'
				"Persia": "Tehran" // key "Persia" 和 value "Tehran" 
			}];
			console.log(capitals);
			// 用于重命名旧键的函数
			function renameKey(obj, old_key, new_key) {
				// 检查如果 old key = new key   
				if(old_key !== new_key) {
					//修改对象的旧键提取描述
					Object.defineProperty(obj, new_key, 
					   Object.getOwnPropertyDescriptor(obj, old_key));
					delete obj[old_key]; // 删除旧键
				}
			}

			function rename() {
				capitals.forEach(obj => renameKey(obj, 'Persia', 'Iran'));
				console.log(capitals);
			}
		</script>
	</body>

</html>

效果图:

2.gif


本文参考地址:https://www.html.cn/qa/javascript/10286.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值