Объекты Javascript: как сделать значение ключа другим ключом (а не значением ключа)? - PullRequest
0 голосов
/ 16 октября 2018

Есть ли способ программно установить значение ключа для другого ключа?например,

export function getObjectForMapStateToProps(state, reducer) {
    let stateObject = {};
    for (let key in state[reducer]) {
        if (state[reducer].hasOwnProperty(key)) {
            stateObject[key] = state[reducer][key];
        }
    }
    return stateObject;
}

Цель состоит в том, чтобы вернуть объект, в котором каждая пара ключ-значение выглядит так:

namespace: state.city.namespace

Что я на самом деле получаю, так этоЗНАЧЕНИЕ ключа space.city.namespace:

namespace: 'DIskieisSi98s8sjw'.

Заранее благодарим за помощь!

РЕДАКТИРОВАТЬ - ДОБАВИТЬ ДОПОЛНИТЕЛЬНЫЙ КОНТЕКСТ

@ mem035 Я, наверное, должен был добавить этот контекст.Я пытаюсь создать функцию, которая позволит мне перестать печатать mapStateToProps для Redux.Для приведенного выше примера вот карта:

const mapStateToProps = state => {
    console.log(getObjectForMapStateToProps(state, 'city'));
    return {
        namespace: state.city.namespace,
        componentId: state.city.componentId,
        items: state.city.items,
        defaultValue: state.city.defaultValue,
        selectItem: state.city.selectItem,
        allowAdd: state.city.allowAdd,
        validationRegEx: state.city.validationRegEx,
        regExDescription: state.city.regExDescription,
        hasForeignKey: state.city.hasForeignKey,
        foreignKeyModel: state.city.foreignKeyModel,
        foreignKeyValue: state.city.foreignKeyValue,
        errorMessages: state.city.errorMessages,
        isError: state.city.isError,
        isLoading: state.city.isLoading,
        apiRoute: state.city.apiRoute
    };
};

Когда значение становится строкой, ни одно из свойств не отображается / не работает.

1 Ответ

0 голосов
/ 16 октября 2018

Просто зафиксируйте свой результат вместо того, чтобы снова получить доступ к объекту.

Вместо:

stateObject[key] = state[reducer][key];

Использование:

stateObject[key] = `state.${reducer}.${key}`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...