JavaScript 无法设置 undefined 的属性

JavaScript Cannot set property of undefined

本文关键字:属性 undefined 设置 JavaScript      更新时间:2023-09-26

我是一个新手后端开发人员,我的任务是添加一些反应功能,但我完全超出了我的深度。 下面的代码生成异常"无法设置未定义的属性'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 中提取我的值。

我猜你显示的属性是分配给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']
    }
}),

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