Laravel传递数组到Blade,JS用变量键访问对象返回undefined
解决动态键访问JS对象返回undefined的问题
第一步:排查拼接键与实际键的一致性
直接打印拼接后的string值,同时输出对象的所有键,对比两者是否完全匹配:
console.log('拼接出的键:', string); console.log('对象的所有键:', Object.keys(array_));
大概率是拼接的键里藏了空格、大小写差异或者多余字符——比如array[i].name尾部带空格,拼接后变成jondoe _1,自然找不到对应值。
第二步:强制属性值转为字符串类型
如果array[i].number是数字或其他非字符串类型,拼接时可能出现意外格式(比如null会拼成jondoe_null),手动转成字符串避免问题:
string = String(array[i].name) + "_" + String(array[i].number);
第三步:确认JS对象的实际结构
打印完整的array_对象,确保预期的键(比如jondoe_1)确实存在,没有被json_encode意外转换格式:
console.log('完整对象:', array_);
第四步:排查特殊字符转义问题
如果PHP数组的键包含特殊字符,json_encode会自动转义,此时需要对比拼接键和对象键的JSON标准化形式:
console.log('拼接键的JSON形式:', JSON.stringify(string)); console.log('对象键的JSON形式:', Object.keys(array_).map(k => JSON.stringify(k)));
内容的提问来源于stack exchange,提问作者Schulz Martin
相关产品推荐
相关产品推荐

