for-in
for...in
语句以任意顺序遍历一个对象的除Symbol
以外的可枚举属性。
for (variable in object){
...
}
variable
:在每次迭代时,variable
会被赋值为不同的key
,即属性名。object
:非Symbol
类型的可枚举属性被迭代的对象。
for ... in
更适合遍历对象,不建议与数组一起使用,因为遍历顺序有可能不是按照实际数组的索引顺序。
for ... in
会遍历所有的可枚举属性,包括原型:
const obj = { a: 1, b: 2, c: 3 };
function myObj() {
this.name = 'Jack';
}
myObj.prototype = obj;
const user = new myObj();
for (const prop in user) {
console.log(`user.${prop} = ${user[prop]}`);
}
// user.name = Jack
// user.a = 1
// user.b = 2
// user.c = 3
如果想仅迭代自身的属性,需要使用hasOwnProperty()
方法判断某个属性是否是该对象的实例属性:
const obj = { a: 1, b: 2, c: 3 };
function myObj() {
this.name = 'Jack';
}
myObj.prototype = obj;
const user = new myObj();
for (const prop in user) {
if (user.hasOwnProperty(prop)) {
console.log(`user.${prop} = ${user[prop]}`);
}
}
// user.name = Jack
for-of
for...of
语句在可迭代对象(包括 Array
,Map
,Set
,String
,TypedArray
,arguments
对象等 )上创建一个迭代循环,并为每个不同属性的值执行语句。
for (variable of iterable) {
...
}
variable
:在每次迭代中,将不同属性的值分配给variable
。iterable
:被迭代枚举其属性的对象。
迭代数组:
const arr = [10, 20, 30];
for (const value of arr) {
console.log(value);
}
// 10
// 20
// 30
迭代Map
:
const map = new Map([
['a', 1],
['b', 2],
['c', 3],
]);
for (const entry of map) {
console.log(entry);
}
// ["a", 1]
// ["b", 2]
// ["c", 3]
for (const [key, value] of map) {
console.log(value);
}
// 1
// 2
// 3
迭代arguments
对象:
(function () {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3);
// 1
// 2
// 3
总结
for...in
语句以任意顺序迭代对象的键,包括原型。不建议与数组一起使用。for...of
语句遍历可迭代对象的值。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!