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

js 循环取出对象的属性

js 循环取出对象的属性

拉风的咖菲猫 2019-03-11 12:15:20
一个对象state={    new1:1,    new2:2,    new3:3,    old1:1,    old2:2}我如果想循环取出 state.new1 state.new2state.new3的值应该怎么取不取出old1 old2例如第一次循环得到 state.new1 第二次得到 state.new2for(var i=0;i<3;i++){    第一次循环得到 state.new1     第二次得到 state.new2}
查看完整描述

5 回答

?
森栏

TA贡献1810条经验 获得超5个赞

let state={

    new1:1,

    new2:2,

    new3:3,

    old1:1,

    old2:2

};

const BLACK_LIST = ["old1", "old2"];


for(let p in state) {

    if(BLACK_LIST.indexOf(p) == -1)

        console.log(p, state[p])

}


查看完整回答
反对 回复 2019-04-03
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

for(var value in state){

    console.log(state[value])

}


查看完整回答
反对 回复 2019-04-03
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

对象用for in循环


const state = {

  news1: 1,

  news2: 2,

  news3: 3,

  old: 1,

  old2: 2

}

var arr = []

for (let o in state) {

  if (o.indexOf('news') > -1) {

    arr.push({[o]: state[o]})

  }

}

console.log(arr)


查看完整回答
反对 回复 2019-04-03
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

可以把不想枚举的属性的enumerable设置为false,这样for in的话就不会循环出来了:


function notEnum (obj, keys) {

  keys.forEach(key => {

    let def = Object.getOwnPropertyDescriptor(obj, key)

    def.enumerable = false

    Object.defineProperty(obj, key, def)

  })

}

var state = {

    new1:1,

    new2:2,

    new3:3,

    old1:1,

    old2:2

}

notEnum(state, ['old1', 'old2']) // 把old1和old2设置为不可枚举属性

for (let i in state) {

  console.log(i)

}


查看完整回答
反对 回复 2019-04-03
  • 5 回答
  • 0 关注
  • 707 浏览
慕课专栏
更多

添加回答

举报

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