我有这个对象的例子:
{
"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相关。
答案 0 :(得分:1)
您尝试访问索引[contactsArr.length - 1]但在此上下文中未定义contactsArr。考虑:
var contactsArr = arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr;
return contactsArr[contactsArr.length - 1].id;
答案 1 :(得分:0)
根据您的示例,我认为您不需要在contactsArr
上指定索引。它应该是return arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr.id;
答案 2 :(得分:0)
您可以使用销毁赋值来获取包含"contactsArr"
属性的"id"
属性值数组
var arrSuppCompNames = [{
"id": 2,
"name": "name",
"address": "add",
"contactsArr": [{
"id": 2,
"name": "cont",
"tel": "tel",
"mail": "mail"
}],
"description": "desc"
},
{
"id": 1,
"name": "name",
"address": "add",
"contactsArr": [{
"id": 1,
"name": "cont",
"tel": "tel",
"mail": "mail"
}],
"description": "desc"
}
]
var {contactsArr: [{id}]} = arrSuppCompNames[arrSuppCompNames.length - 1];
console.log(id);