2017-07-20 32 views
0

私は4つのオブジェクトの配列を持っている:オブジェクトの配列からJavaScriptオブジェクトを取得します

obejcts

var arrProducts = @Model.ViewModel_SessionObject.GetJsonProducts(); 
var arrProducts = [ 
{"RateCode":"IBE","RoomCode":"A1D","IDSharedAvailability":0,"TotalRooms":"4 rooms available","SelectedRooms":0}, 
{"RateCode":"PR2","RoomCode":"A1D","IDSharedAvailability":0,"TotalRooms":"4 rooms available","SelectedRooms":0}, 
{"RateCode":"IBE","RoomCode":"B2T","IDSharedAvailability":0,"TotalRooms":"7 rooms available","SelectedRooms":0}, 
{"RateCode":"PR2","RoomCode":"B2T","IDSharedAvailability":0,"TotalRooms":"7 rooms available","SelectedRooms":0}]; 

のこの戻り配列は道があることを私ができますオブジェクトを取得するときにアンカーをクリックすると、すべてのオブジェクトのリストのビューが表示されます。 もっと明確にするには、RoomCodでオブジェクトを選択または検索します。私はアンカータグをクリックしてeとRateCode。

@foreach (var item in Model.ViewModel_SessionObject.HotelAvailabilityRSObject.RoomTypes) // rooms Loop 
{ 
    HotelDetailsRSRoomType RoomDetails = Model.ViewModel_SessionObject.HotelDetailsRSObject.GetRoomTypeByCode(item.RoomCode); 
    if (RoomDetails != null) 
    { 
     <div style="border-left: 1px solid #fff;border-right: 1px solid #fff;padding: 10px;border-bottom: 1px solid #fff;background-color: #fff; "> 

      <!--Rate describtion--> 
      <br /> 
      <!--Rooms section--> 
      <div id="rooms"> 
       <div class="row"> 
        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-3"> 
         <!--rooms Name--> 
         <label>@RoomDetails.RoomName</label><br /> 
         <p> 
          <!--rooms Image--> 
          <img height="200" width="200" style="border:solid;" [email protected]() /> 
         </p> 
        </div> 

        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 font"> 
         <!--rooms Describtion--> 
         <div class="comment"> 
          <label>@RoomDetails.RoomDescription</label><br /> 
         </div> 
        </div> 

        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-5"> 
         @foreach (var rateitem in item.RateCodes) 
         { 
          <div style="background-color:#F9F9F9;border-bottom: 2px #c9c5c5 solid;"> 
           <!--rooms Price--> 
           <label>@Model.ViewModel_SessionObject.HotelDetailsRSObject.GetRateCodeByCode(rateitem.RateCode).RateName</label><br /> 
           <div class="tooltip" style="margin-left: 83px;"> 
            <img src="~/img/info.png" alt="Alternate Text" /> 
            <span class="tooltiptext">@Model.ViewModel_SessionObject.HotelDetailsRSObject.GetRateCodeByCode(rateitem.RateCode).RateDescription</span> 
           </div> 
           <div class="tooltip" style="margin-left: 42px;"> 
            @if (rateitem.CancellationPolicies[0].CancelTimestamp > DateTime.Today) 
            { 
             <img src="~/img/FreeCancellationPossible.png" alt="Alternate Text" /> 
             <span class="tooltiptext">@rateitem.CancellationPolicies[0].GetCancellationPolicyText()</span> 
            } 
            else 
            { 
             <img src="~/img/FreeCancellationNotPossible.png" alt="Alternate Text" /> 
             <span class="tooltiptext">@rateitem.CancellationPolicies[0].GetCancellationPolicyText()</span> 
            } 
           </div> 
           <div class="tooltip"> 

            @if (rateitem.MealsIncluded.ToString() == "NoMeals") 
            { 
             <img src="~/img/NoMealsIncl.png" alt="Alternate Text" /> 
             <span class="tooltiptext">@rateitem.GetMealsText()</span> 
            } 
            else 
            { 
             <img src="~/img/MealsIncl.png" alt="Alternate Text" /> 
             <span class="tooltiptext">@rateitem.GetMealsText()</span> 
            } 
           </div><br /><br /><br /> 
           <label>@rateitem.GetAvailabilityText()</label> 
           <div id="btn_select" style='position:relative;background-color:#77d711;width:89px;height:40px;float: right;bottom: 67px;'> 
            <p style='display:inline;color:#ffffff;float:right;margin-top: 10px;margin-right: 4px;'> 
             @rateitem.TotalRate.ToString("N2") 
             @Model.ViewModel_SessionObject.HotelAvailabilityRSObject.CurrencyCode 
            </p> 
// This is the anchor tag i want click on to select the object he has   <a style='position:absolute;top:0px;left:0px;width:100%;height:100%;display:inline;' href='javascript:SelectRooms(arrProducts);'></a> 
           </div><br /><br /><br /> 
           <div id="btn_remove" style='position:relative;background-color:#11d7c9;width:89px;height:30px;float: right;display:none;'> 
            <p style='display:inline;color:#ffffff;float:right;margin-top: 5px;margin-right: 20px;'> 
             Remove 
            </p> 
            <a style='position:absolute;top:0px;left:0px;width:100%;height:100%;display:inline;' href='#'></a> 
           </div> 
          </div> 
         } 
        </div> 
       </div> 
      </div> 
      <!--End rooms section--> 
     </div> 
    } 
} 

私はこの機能を試してみましたが、それはできますか私はアンカータグをクリックしますが、私はアンカーによって選択された特定のオブジェクトを必要とする場合、すべてのオブジェクトを返します。

<script type="text/javascript"> 
    function SelectRooms(arrProducts) { 
     var filterObj = arrProducts.filter(function (e) { 
      return e. 
     }); 

    }; 
</script> 
+0

あなたが実際に何かに基づいてフィルタリングすることがあります。 RoomCodeとRateCodeはどこから来たのですか? – adeneo

+0

はい、どのようにこのフィルタを行うことができますRoomCodeとRatedCodeはarrProductsから来ていますか? – ahosam

答えて

1

である私は、あなたが正確に何をしたいの100%わからないが、私はあなたの間違いが合格していないことだったと思います部屋コード/部屋はあなたの機能ではありません。 それはあなたが、これは便利かもしれませんケースだ場合:単一のオブジェクトとして "RoomCode" によって

のGet部屋:

function getRoom(arrProducts, code){ 
    //for modern browsers (> ie 11) 
    return arrProducts.find(x => x.RoomCode === code); 

    //for a bit older ones 
    return arrProducts.filter(function(x) { 
     return x.RoomCode === code; 
    }).pop(); 

    //for really old ones 
    for(var i = arrProducts.length; i--;;){ 
     if (arrProducts[i].RoomCode === code) return arrProducts[i]; 
    } 

    return null; 
} 

配列として "RoomRate" で部屋を取得:

function getarrProducts(arrProducts, rate) { 
    //for modern browsers (> ie 11) 
    return arrProducts.filter(x => x.RoomRate === rate); 

    //for a bit older ones 
    return arrProducts.filter(function(x) { 
     return x.RoomRate === rate; 
    }); 

    //for really old ones 
    var results = []; 
    for(var i = arrProducts.length; i--;;){ 
     if (arrProducts[i].RoomRate === rate) results.push(arrProducts[i]); 
    } 
    return results; 
} 

更新

"RoomCode"と "RoomRate"で部屋が必要な場合は、次のように入力してください:

function getRoom(arrProducts, code, rate) { 
    //for modern browsers (> ie 11) 
    return arrProducts.find(x => x.RoomCode === code && x.RoomRate === rate); 

    //for a bit older ones 
    return arrProducts.filter(function(x) { 
     return x.RoomCode === code && x.RoomRate === rate; 
    }).pop(); 

    //for really old ones 
    for(var i = arrProducts.length; i--;;){ 
     if (arrProducts[i].RoomCode === code && x.RoomRate === rate) return arrProducts[i]; 
    } 

    return null; 
} 

ドキュメント:

+1

右、これは私が必要ですが、私は 'RoomCodeとRateCodeを1つのオブジェクトとして一緒に部屋を取得したい ' – ahosam

+0

ああ、私は答えを更新しました。 – Werner

2

あなたはfilter必須に渡す方法あなたが返す項目の真理値を返します。

あなたは(上の例では IBEA1D)から値を取得
function SelectRooms(arrProducts) { 
    var filterObj = arrProducts.filter(function (e) { 
     return e.RateCode === "IBE" && e.RoomCode === "A1D"; 
    }); 
    return filterObj[0]; // first/single item 
}; 

はあなた次第

関連する問題