我有这个对象的例子:

{
    "id": 1,
    "name": "name",
    "address": "add",
    "contactsArr": [{
        "id": 1,
        "name": "cont",
        "tel": "tel",
        "mail": "mail"
    }],
    "description": "desc"
}


该对象位于对象数组内,该数组称为arrSuppCompNames。我从数据库表中的JSON字符串获取此数组。
这是我在contactsArr中获取最后一个对象的ID的函数:

function getLastIdFromArrContUser(){
  if("{{user.supplier_comp_name}}" != null && "{{user.supplier_comp_name}}" != "" && "{{user.supplier_comp_name}}" != 0){//not first
    var arrSuppCompNames = JSON.parse(("{{user.supplier_comp_name}}").replace(/"/g,'"'));
    console.log("arrSuppCompNames: " + JSON.stringify(arrSuppCompNames));
    return arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr[contactsArr.length - 1].id;
  }else{//first
    return 0;
  }
}


但我在该行Uncaught ReferenceError: contactsArr is not defined中一直得到return arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr[contactsArr.length - 1].id;。事实是我确定对象数组内是否存在contactsArr,因为日志打印仅在前一行。这是我的日志:

arrSuppCompNames: [{"id":1,"name":"name","address":"add","contactsArr":[{"id":1,"name":"cont","tel":"tel","mail":"mail"}],"description":"desc"}]


不知道这只是一个愚蠢的JS错误或我看不见的错误类型,还是其他与JSON相关的东西。

最佳答案

您尝试访问索引[contactsArr.length-1],但在此上下文中未定义contactsArr。考虑:

var contactsArr = arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr;
return contactsArr[contactsArr.length - 1].id;

关于javascript - 对象内部的数组未定义JS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42755230/

10-09 23:22