zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JS面试点-for in 循环

2023-06-13 09:14:11 时间

for in循环

  • for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
  • for...in 循环只遍历可枚举属性。像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性
  • 语法:for (variable in object) variable:在每次迭代时,variable会被赋值为不同的属性名。 object:非Symbol类型的可枚举属性被迭代的对象。
  • 最好不要用for...in去迭代一个数组。
var obj = {a:1, b:2, c:3};
    
for (var prop in obj) {
  console.log("obj." + prop + " = " + obj[prop]);
}

// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
可以循环遍历数组,还可以循环遍历对象,代码中的index,key1,key2分别是目标对象(数组)中的键值(数组中叫习惯叫索引)。arr数组中的index分别0,1,2,3,userMsg对象下的key1分别是"nick"、"freddy"的键值, key2就是userMsg.nick和userMsg.freddy下的键值了,为"name"、"age"、"sex"。(for in在写法上会稍微复杂些,不过他很清晰的展示了循环过程)。
var arr = ['nick','freddy','mike','james'];

for(var index in arr){
    console.log(index +'. ' + arr[index]);
}
// 0. nick
// 1. freddy
// 2. mike
// 3. james

var userMsg = {
    nick: {
  name: 'nick',
  age: 18,
  sex: '男'
    },
    freddy: {
  name: 'freddy',
  age: 24,
  sex: '男'
    }
};

for(var key1 in userMsg){
    console.log(key1);
    for(var key2 in userMsg[key1]){
  console.log('key' +': ' + userMsg[key1][key2]);
    }
}
输出
// nick
// key: nick
// key: 18
// key: 男
// freddy
// key: freddy
// key: 24
// key: 男

尚硅谷_C语言国二真题精讲

链接:https://pan.baidu.com/s/1AbWZe0I6NG-BHXBFVLON3w

提取码:kfdg