2017-12-13 2 views
-1

私は以下のようにオブジェクトoInfoModalを持っています。JSONをチェックしてプッシュ

var oInfoModal = {"modals" : [ 
{"myID" : 4,"myVals" : [{2,5,7}]}, 
{"myID" : 9,"myVals" : [{13,8,6}]}, 
{"myID" : 6,"myVals" : [{1}]} 
] }; 

私がやっていることは、着信データを処理して、着信データの値が存在するかどうかを確認することです。 つまりmyIDが6の場合、myIdxをmyValsに追加します。 しかし、6のmyIDが存在しない場合は、サブオブジェクトを作成し、それをoInfoModalにプッシュします。

function processFunction(idx){ 
    var myIdx = 3; // 
    var myID = 6; 

    var existsMyID = $.map(oInfoModal.modals, function(elem, index) { 
    if (elem.myID == myID){ 
     // myID is found in oInfoModal 
     return true; 
    } else{ 
     // myID not found in oInfoModal 
     return false; 
    } 
    }); 

    if (existsMyID){ 
    // myID is found in oInfoModal. push myIdx to myVals for myID=6 in oInfoModal   
    // How? 
    } else { 
    // myID not found in oInfoModal. Create and push full object to oInfoModal 
    var myObj = {"myID" : myID,"myVals" : myIdx};   
    oInfoModal.modals.push(myObj); // not working 
    } 
} 

私はコーヒーを飲んだので、そうではありません。私は何が欠けていますか?

+3

'[{2,5,7-は}]'有効無効構造 – charlietfl

+1

ある "myVals" である:[2,5,7-] – Roy

+1

また '$ .MAP()'戻ります配列...常に真実になる – charlietfl

答えて

0

myValsの値が正しくありません。配列に値が存在するかどうかを確認するには、array#findを使用する必要があります。存在する場合は、新しい値をプッシュできます。それ以外の場合は、IDと値を持つ新しいオブジェクトを追加します。

var oInfoModal = {"modals" : [{"myID" : 4,"myVals" : [2,5,7]},{"myID" : 9,"myVals" : [13,8,6]},{"myID" : 6,"myVals" : [1]}]}; 
 

 
function processFunction(idx){ 
 
    var myIdx = 3; // 
 
    var myID = 20; 
 
    var existsMyID = oInfoModal.modals.find(function(o){ 
 
    return o.myID === myID; 
 
    }); 
 

 
    if(existsMyID) 
 
    existsMyID.myVals.push(myIdx); 
 
    else { 
 
    var myObj = {"myID" : myID, "myVals" : [myIdx]};  
 
    oInfoModal.modals.push(myObj); 
 
    } 
 
} 
 
processFunction(null); 
 

 
console.log(oInfoModal);

+1

ハッサン、ロイ、チャリエフフの方々に感謝します! –

関連する問題