当前位置: 首页 > 面试题库 >

使用for-in语句能保证遍历对象的顺序吗?如果不能那为什么?如果可以那又如何保证?

子车雅珺
2023-03-14
本文向大家介绍使用for-in语句能保证遍历对象的顺序吗?如果不能那为什么?如果可以那又如何保证?相关面试题,主要包含被问及使用for-in语句能保证遍历对象的顺序吗?如果不能那为什么?如果可以那又如何保证?时的应答技巧和注意事项,需要的朋友参考一下

Chrome Opera 的 JavaScript 解析引擎遵循的是新版 ECMA-262 第五版规范。因此,使用 for-in 语句遍历对象属性时遍历顺序并非属性构建顺序。而 IE6 IE7 IE8 Firefox Safari 的 JavaScript 解析引擎遵循的是较老的 ECMA-262 第三版规范,属性遍历顺序由属性构建的顺序决定。

如果我们需要按照一定的顺序输出属性,也可以先在一个数组中保存所有的key值,再将数组排序,最后循环这个key数组,通过key获取对象中的属性即可:
var user = {};
if(!user['Jason']) {
user['Jason'] = [];
}
user['Jason']['grade'] = 3;
user['Jason']['level'] = 1;

if(!user['arthinking']) {
user['arthinking'] = [];
}
user['arthinking']['grade'] = 4;
user['arthinking']['level'] = 1;

console.log(user);

for(var key in user){
console.log('key: ', key);
}

var keys = [];
for(var key in user){
keys.push(key);
}
keys = keys.sort();

for(var i=0; i<keys.length; i++){
var key = keys[i];
console.log(user[key]['grade']);
}

 类似资料:
  • 本文向大家介绍vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序?相关面试题,主要包含被问及vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序?时的应答技巧和注意事项,需要的朋友参考一下 1、会先判断是否有iterator接口,如果有循环执行next()方法 2、没有iterator的情况下,会调用Object.keys()方法,在不同浏览器中,JS引擎不能保证输出顺序

  • 本文向大家介绍js能够保证object属性的输出顺序吗?如果可以怎么做?相关面试题,主要包含被问及js能够保证object属性的输出顺序吗?如果可以怎么做?时的应答技巧和注意事项,需要的朋友参考一下 我的解决方法是:

  • 本文向大家介绍topic的分区数可不可以增加?如果可以怎么增加?如果不可以,那又是为什么?相关面试题,主要包含被问及topic的分区数可不可以增加?如果可以怎么增加?如果不可以,那又是为什么?时的应答技巧和注意事项,需要的朋友参考一下 可以增加 bin/kafka-topics.sh --zookeeper localhost:2181/kafka --alter --topic topic-co

  • 本文向大家介绍topic的分区数可不可以减少?如果可以怎么减少?如果不可以,那又是为什么?相关面试题,主要包含被问及topic的分区数可不可以减少?如果可以怎么减少?如果不可以,那又是为什么?时的应答技巧和注意事项,需要的朋友参考一下 不可以减少,被删除的分区数据难以处理。

  • 我只是想知道如何有效地使用NumPy sort()函数按降序对NumPy数组进行排序。我查看了NumPy官方文档和StackOverflow问题,但找不到如何使用NumPy sort()按降序对NumPy数组进行排序。 我想按降序排序,我明白了按升序排序数组后,我可以像下面一样反转它。 但它会创建一个新数组,是否可以在不使用此方法的情况下按降序排序?

  • 问题内容: 如何在SQL中遍历SELECT语句的结果?我的SELECT语句将仅返回1列,但返回n个结果。 我在下面创建了一个虚构的场景,其中包含我想做的事情的伪代码。 设想: 学生正在注册他们的课程。他们提交具有多个课程选择的表格(即一次选择3个不同的课程)。当他们提交注册时,我需要确保他们选择的课程还有剩余的空间(请注意,在向他们展示课程选择UI之前,我将进行类似的检查,但是之后我需要进行验证,