2017-12-30 44 views
0

JavaScriptを使用して多次元オブジェクトから値を取得しようとしています。私は.filterで試しましたが、配列だけで動作しているようです。また、ほとんど私はUnderscoreJS_whereでそれをしましたが、非多次元のオブジェクトでのみ動作します。それは可能ですか、私はオブジェクトを再構成する必要がありますか?あなたのJSON配列へをループすることができます多次元オブジェクトから値を取得しますか?

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript"> 
var configurators = JSON.parse('{"ConfiguredItems":{"OtapiConfiguredItem":[{"Id":"3667395302656","Quantity":"2981","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"3224419"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}},{"Id":"3667395302655","Quantity":"4145","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"129819"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}},{"Id":"3667395302654","Quantity":"0","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"80557"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}}]}}'); 

function FindConfigurator(pid, vid) { 
    var id = null; 

    // 

    console.log(configurators); // Returns the configurators. 
    console.log(id); // Should return `3667395302656`. 
} 

FindConfigurator(1627207, 3224419); 
    </script> 
</head> 
</html> 

答えて

0

および所望の結果を得る

:(

コード(https://jsfiddle.net/ob58fye2/) ':私は...助けてください任意のヒントに感謝することでしょう。

var configurators = JSON.parse('{"ConfiguredItems":{"OtapiConfiguredItem":[{"Id":"3667395302656","Quantity":"2981","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"3224419"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}},{"Id":"3667395302655","Quantity":"4145","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"129819"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}},{"Id":"3667395302654","Quantity":"0","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"80557"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}}]}}'); 
 

 
function FindConfigurator(pid, vid) { 
 
    var id = null; 
 
    configurators.ConfiguredItems.OtapiConfiguredItem.forEach(
 
    (OtapiConfiguredObj)=>{ 
 
    OtapiConfiguredObj.Configurators.ValuedConfigurator.forEach(
 
    (ValuedConfiguratorObj)=>{ 
 
    if(ValuedConfiguratorObj['@attributes'].Pid === pid.toString() && ValuedConfiguratorObj['@attributes'].Vid === vid.toString()){ 
 
     id = OtapiConfiguredObj.Id; 
 
    } 
 
    }); 
 
    }); 
 
    console.log(configurators); // Returns the configurators. 
 
    console.log(id); // Should return `3667395302656`. 
 
} 
 

 
FindConfigurator(1627207, 3224419);

あなたはforEachbreakステートメントを追加することはできません、ので、あなたは一般的なLOを持つことができますそうすることで、一致が見つかったときにループが壊れます。

var configurators = JSON.parse('{"ConfiguredItems":{"OtapiConfiguredItem":[{"Id":"3667395302656","Quantity":"2981","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"3224419"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}},{"Id":"3667395302655","Quantity":"4145","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"129819"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}},{"Id":"3667395302654","Quantity":"0","Configurators":{"ValuedConfigurator":[{"@attributes":{"Pid":"1627207","Vid":"80557"}},{"@attributes":{"Pid":"20509","Vid":"28383"}}]}}]}}'); 
 

 
function FindConfigurator(pid, vid) { 
 
    var id = null; 
 
    for(var i=0; i<configurators.ConfiguredItems.OtapiConfiguredItem.length; i++){ 
 
    var OtapiConfiguredObj = configurators.ConfiguredItems.OtapiConfiguredItem[i]; 
 
    for(var j=0; j< OtapiConfiguredObj.Configurators.ValuedConfigurator.length; j++) { 
 
     var ValuedConfiguratorObj = OtapiConfiguredObj.Configurators.ValuedConfigurator[j]; 
 
     if(ValuedConfiguratorObj['@attributes'].Pid === pid.toString() && ValuedConfiguratorObj['@attributes'].Vid === vid.toString()){ 
 
     id = OtapiConfiguredObj.Id; 
 
     break; 
 
     } 
 
    } 
 
    if(id){break;} 
 
    } 
 
    console.log(configurators); // Returns the configurators. 
 
    console.log(id); // Should return `3667395302656`. 
 
} 
 

 
FindConfigurator(1627207, 3224419);

+0

ありがとう!!!それは完全に動作します! –

+0

@htorbovあなたを助けてうれしい。緑に印を付けることを忘れないでください –

関連する問題