2017-03-13 5 views
0

私はこのオブジェクトの例を持って定義されていない。アレイはJS

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

このオブジェクトは、オブジェクトの配列の内側に、アレイはarrSuppCompNames呼ばれています。私はDBテーブル内のJSON文字列からこの配列を取得します。

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; 
    } 
} 

が、私は、この行return arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr[contactsArr.length - 1].id;Uncaught ReferenceError: contactsArr is not definedを得続ける: はここcontactsArr内の最後のオブジェクトのIDを取得するために私の関数です。物事の配列の前に行が印刷されているので、オブジェクトの配列の内部にはcontactsArrが存在することが分かります。これは私のログです:

私は見ることができないか、それ以上のJSONに関連するばかげたJSエラーかミスタイプか分かりません。

答えて

1

インデックス[contactsArr.length - 1]にアクセスしようとしましたが、contactsArrはこのコンテキストでは定義されていません。考えてみましょう:

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

感謝を"id"プロパティを含む"contactsArr"プロパティ値の配列を取得するには消滅の割り当てを使用することができます最初の間違いです – mallocthePD

+0

contactsArrはJSON構造体のインデックス名であり、関数のスコープ内では定義されていません。私が提案したのは、配列をJSON構造体からローカル変数に保存することでした。この変数はスコープ内で認識されていました。代わりに、次のようなものがあります: 'return arrSuppCompNames [arrSuppCompNames.length - 1] .contactsArr [arrSuppCompNames [arrSuppCompNames.length - 1] .contactsArr.length - 1] .id' –

0

例に基づいて、contactsArrにインデックスを指定する必要はありません。 return arrSuppCompNames[arrSuppCompNames.length - 1].contactsArr.id;

0

をあなたが、私はまだ、なぜ取得できませんでしたが、それは...私の問題を解決し

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);