JavaScript Object.key() 方法
在 JavaScript 中, Object.keys() 是一个内置方法,它返回给定对象的自身可枚举属性的数组,顺序与 for…in循环 遍历它们的顺序相同。
示例
这是一个示例:
const myObject = {
name: 'John',
age: 30,
job: 'Developer'
};
const keys = Object.keys(myObject);
console.log(keys);
输出
[ 'name', 'age', 'job' ]
在此示例中,使用 Object.keys() 方法返回一个数组,其中包含 myObject 对象的属性名。生成的数组包含字符串 ‘name’、’age’、和 ‘job’ 。
请注意,该方法仅返回对象自身可枚举的属性,这意味着直接定义在对象上的属性不包括从原型链继承的属性。如果要包括所有属性,可枚举和不可枚举的,可以使用 Object.getOwnPropertyNames() 方法。
示例
下面是使用 Object.keys() 迭代对象属性的另一个示例:
const myObject = {
name: 'John',
age: 30,
job: 'Developer'
};
const keys = Object.keys(myObject);
for (let i = 0; i
输出:
该代码的输出结果为:
name: John
age: 30
job: Developer
在这个示例中,我们首先使用 Object.keys() 获得myObject对象的属性名数组。然后,我们使用for循环遍历这个键数组,并将每个属性名及其对应的值记录到控制台中。
请注意,输出中属性的顺序可能不一定与它们在对象字面量中定义的顺序相匹配。
示例
这是另一个示例,演示了如何使用 Object.keys() 操作对象的属性:
const myObject = {
name: 'John',
age: 30,
job: 'Developer'
};
const keys = Object.keys(myObject);
// Add a new property to the object
myObject.location = 'USA';
// Delete a property from the object
delete myObject.job;
// Update an existing property
myObject.age = 31;
// Log the updated object
console.log(myObject);
// Iterate over the keys array and log each property name and value
for (let i = 0; i
输出
{ name: 'John', age: 31, location: 'USA' }
name: John
age: 31
job: undefined
在这个示例中,我们首先使用 Object.keys() 获取一个 myObject 对象的属性名的数组。然后,我们在对象上添加一个新属性(location),删除一个已存在的属性(job)并更新一个已存在的属性(age)。最后,我们将更新后的对象记录到控制台上。
示例
这个示例展示了如何使用 Object.keys() 创建一个只包含指定某些属性的新对象。
const myObject = {
name: 'John',
age: 30,
job: 'Developer'
};
const selectedKeys = ['name', 'age'];
const selectedProps = Object.keys(myObject)
.filter(key =>selectedKeys.includes(key))
.reduce((obj, key) => {
obj[key] = myObject[key];
return obj;
}, {});
console.log(selectedProps);
输出
{ name: 'John', age: 30 }
在这个示例中,我们首先定义了一个包含要包含在新对象中的属性名称的数组 selectedKeys 。之后,我们使用 Object.keys() 来获取所有属性名称的数组myObject。
我们使用 Array.filter() 方法来移除没有包含在 selectedKeys 中的属性名称。然后,我们使用 Array.reduce() 方法来创建一个只包含选定属性的新对象。reduce()方法接受一个初始值为一个空对象({})和一个回调函数,该函数将每个选定的属性添加到对象中。
下面是关于Object.keys()的一些重要要点
- keys() 是一个静态方法,这意味着它直接在Object构造函数上调用,而不是在单个对象上调用。
- 由 keys() 返回的键的顺序由引擎实现确定,可能在不同的引擎或版本之间不一致。
- 如果传递的参数不是一个对象(例如null,undefined,原始值), keys() 将抛出TypeError。
- 如果传递的对象没有自己的可枚举属性(即在其上直接定义的属性),则 keys() 将返回一个空数组。
- keys() 只返回可枚举的属性名称。要包括不可枚举的属性,请使用 Object.getOwnPropertyNames() 。
- 如果要遍历对象的属性,而不关心属性名称,可以使用 Object.values() 获取属性值的数组,或使用 Object.entries() 获取 [key, value] 对的数组。