JavaScript无法设置未定义

时间:2016-07-15 20:01:46

标签: javascript json reactjs

我是一名新手后端开发人员,我的任务是添加一些反应功能,而且我完全不在我的深度。以下代码生成异常"无法设置属性' 1'未定义"。第一个元素是id:1和name:""。我不认为空字符串与我的问题有任何关系,因为我已经尝试过对字符串进行硬编码而且得到了同样的例外。

payment_code: {
    label: 'Payment Code',
    value: 'payment_code',
    choices: adminSalesStore.paymentCodes.map((payment_code) => {
        console.log(payment_code);
        console.log(payment_code['id']);
        console.log(payment_code['name']);
        displayChoices.payment_code[payment_code['id']] = payment_code['name'];
        return {
            label: payment_code['id'],
            value: payment_code['name']
        }
    }),
    type: 'choice'
},

我真的不明白错误,因为payment_code [' id']和payment_code [' name']不是空的或未定义的。日志声明证实了这一点。对于超级基本问题感到抱歉,但我已经广泛搜索了这个问题,这个错误仍然没有任何意义。在同一个班级中有类似的功能,它们都有效。但是,其他方法使用const数组,我需要从db中提取我的值。

2 个答案:

答案 0 :(得分:1)

我猜你所展示的属性是displayChoices作业的一部分,即它是这样的:

displayChoices = {
    ...
    payment_code: {
        label: "Payment Code",
        value: 'payment_code',
        choices: adminSalesStore.paymentCodes.map((payment_code) => {
            console.log(payment_code);
            console.log(payment_code['id']);
            console.log(payment_code['name']);
            displayChoices.payment_code[payment_code['id']] = payment_code['name'];
            return {
                label: payment_code['id'],
                value: payment_code['name']
            }
        }),
        type: 'choice'
    },
    ...
};

问题是,在此声明完成之前,没有displayChoices.payment_code属性,因此您无法分配到displayChoices.payment_code[anything]

完成第一次作业后,你应该完成这项任务。

displayChoices = {
    ...
    payment_code: {
        label: "Payment Code",
        value: 'payment_code',
        type: 'choice'
    },
    ...
};

displayChoices.choices = adminSalesStore.paymentCodes.map((payment_code) => {
    console.log(payment_code);
    console.log(payment_code['id']);
    console.log(payment_code['name']);
    displayChoices.payment_code[payment_code['id']] = payment_code['name'];
    return {
        label: payment_code['id'],
        value: payment_code['name']
    }
}),

答案 1 :(得分:0)

它的displayChoices.payment_code看起来是未定义的。 displayChoices已定义,或者会抱怨为此设置付款代码,因此我会在运行前定义displayChoices.payment_code = []{}(取决于您的目的)这段代码。或者您可能正在寻找displayChoices.paymentCodes,这更像是您之前选择的adminSalesStore.paymentCodes,并且对我更有意义。不确定没有看到更多的代码。