Javascript代码片段集录

image

对象遍历的几种方法

const params = { id: 1, name: 'bob', age: 13 }
Object.keys(params).forEach(key => console.log(key, params[key]))
Object.values(params).forEach(value => console.log(value))

// 可遍历不可枚举属性
const obj = Object.defineProperty({}, 'value1', {
    value: 666,
    writable: false,
    enumerable: false,
    configurable: false
})
const obj1 = Object.defineProperties({}, {
    value1: { value: 666, enumerable: false },
    value2: { value: 999, enumerable: false }
})
Object.getOwnPropertyNames(obj1).forEach(key => {
    console.log(key)
})

// 可遍历对象原型上的属性
const obj3 = Object.create({ value1: 666 })
obj3.value2 = 999

for (key in obj3) {
    console.log(key)
}

// 返回对象所有属性名的属性 包括不可枚举和Symbol属性
obj1[Symbol('foo')] = 'Symbol foo'
Reflect.ownKeys(obj1).forEach(key => {
    // console.log(key)  // Uncaught TypeError: Cannot convert a Symbol value to a string
    console.log(obj1[key])
})

使用reduce拼接URL参数

const params = { id: 1, name: 'bob', age: 13 }

// reduce((a,b)=>{},'') //第二参数可以指初始值 String|Number
const urlParams = Object.keys(params).reduce((pre, current) => {
    // return pre + current + `=` + params[current] + '&'
    return pre + `${current}=${params[current]}&`
}, '?').slice(0, -1)

console.log(urlParams) //  ?id=1&name=bob&age=13
posted @ 2022-11-05 20:58  会飞的一棵树  阅读(63)  评论(0)    收藏  举报