繁体   English   中英

Redux ES6(BabelJS):是否有可以迭代此结构的map函数?

[英]Redux ES6 (BabelJS): is there a map function that can iterate this structure?

{
            '1': {
                id: 1,
                parent_id: 0,
                elementType: 'view',
                style: {color: 'green'},
                selected: false,
                childIds: [2]
            },
            '2': {
                id: 2,
                parent_id: 1,
                elementType: 'text',
                style: {color: 'green'},
                selected: true,
                childIds: []
            }

}

它是用于减速器的,我很希望能够做到这一点:

obj.map(([key, value])=> {
    if (value.id === 1) {
        return {...value, selected:false};
    } else {
        return value;
    }
});

我想,也许用这个 ,但它可能不会与终极版测绘发挥出色。

更新:

按照这里的建议,我尝试构建一个新的地图函数。 这个版本是我自带的:

const map = (object, callback) => {
    return Object.keys(object).reduce(function(output, key) {

        output[key] = callback.call(this, object[key]);

        return output;
    }, {});
}

我试图像这样使用它(一个示例):

let newState = map(oldState, element => {
    if (element.id === 1) {
        return {...element, selected:false};
    } else {
        return {...element};
    }
});

同时测试通过了。

尝试使用Object.keys(),它将使您能够遍历对象键,这样便可以访问特定的值。

您可以尝试使用Object.entries 它仍然是一个建议,但我认为它已经隐藏在一些通天塔舞台标志的后面。

for (const [key, value] of Object.entries(obj)) {
    //do whatever you want
}

ES提案:Object.entries()和Object.values()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM