为了账号安全,请及时绑定邮箱和手机立即绑定

如何迭代(对于 obj 中的键)起始中间位置

如何迭代(对于 obj 中的键)起始中间位置

慕田峪4524236 2021-09-30 17:54:22
我有一个对象:let obj = {    1: 'one',    2: 'two',    3: 'three',    7: 'seven'}是否有机会从 3 个位置开始迭代它,如下所示:for (let key = 3 in obj) {     console.log(obj[key]) // An output will be 'three' and 'seven'}我需要以最快的方式执行此操作,因为 obj 非常大
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

只需通过简单的方法即可。


let obj = {

  1: 'one',

  2: 'two',

  3: 'three',

  7: 'seven'

};


// make sure that your case is in order


// get keys of your object

const keys = Object.keys(obj);


// find index of starting key

const index = keys.indexOf('3');


// make sure index >= 0


// each all keys from starting key to the end by old school way

for (let i = index; i < keys.length; i++) {

  var key = keys[i];

  console.log(obj[key]);

}


查看完整回答
反对 回复 2021-09-30
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

continue如果键小于 ,您可以使用跳过迭代3:


let obj = {

    1: 'one',

    2: 'two',

    3: 'three',

    7: 'seven'

};

for(let [key, val] of Object.entries(obj)){

     if(key < 3 ){

        continue;

     }

    console.log(val);

 }


查看完整回答
反对 回复 2021-09-30
?
侃侃无极

TA贡献2051条经验 获得超10个赞

您可以通过多种方式实现这一点。一种算法涉及将对象转换为数组。然后确定中点。


let obj = {

    1: 'one',

    2: 'two',

    3: 'three',

    7: 'seven'

}


Object.entries(obj).forEach(([key, value], index, array) => {

    const split = array.length/2

    const midPoint = split % 2 == 0 ? split : Math.floor(split)

    if(index >= midPoint){

        console.log(key)

    }

})


查看完整回答
反对 回复 2021-09-30
  • 3 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信