猿问

如何将变量做为一个对象的key,push进一个数组?

a,b 的key都是相等的

diffObject(a, b) {

    let before = [], after = []

    Object.keys(a).forEach(key => {

        if (a[key] !== b[key]) {

            before.push({ ??? }) // 这里应该怎么写,{key: a[key]},但key不能是变量啊

            after.push({ ??? })

        }

    })

    return [before, after]

}

或者有什么更好,更效率,更牛逼的的办法吗?

我要达到的效果是这样的

const ob1 = {

    name: '辣条',

    color: '绿色',

    length: 10,

}

const ob2 = {

    name: '辣条',

    color: '黄色',

    length: 12,

}

const diff = diffObject(ob1, ob2)

console.log('diff[0]:', diff[0])

console.log('diff[1]:', diff[1])

//  diff[0]: [{color: '绿色'}, {length: 10,}]

//  diff[1]: [{color: '黄色'}, {length: 12,}]

这个问题的根本就是,在声明一个对象时,如何把变量作为一个key。

牧羊人nacy
浏览 880回答 1
1回答

斯蒂芬大帝

ES6 允许字面量定义对象时,用表达式作为对象的属性名var lastWord = 'last word';var a = {  'first word': 'hello',  [lastWord]: 'world'};a['first word'] // "hello"a[lastWord] // "world"a['last word'] // "world"
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答