y <- if (x < 5) 1 else 2
не работает на весь вектор (предупреждение, которое вы получаете, указывает, что будет использоваться только первый элемент условия). Вы хотите ifelse
:
y <- ifelse(x < 5, 1, 2)
ifelse
работает по всему логическому вектору, поэтапно. if
принимает только одно логическое значение. См. ?"if"
и ?ifelse
Вы можете использовать : contains () Selector для достижения цели. Вам действительно не нужны разные методы, которые вы можете сделать для вас.
// Selection of Time Slots
var price = $(".master > .abc > .cost > label");
var timeSlots = $(".master > .abc > .time > span").text();
var timeArray = timeSlots.split('NonStop');
var highestPrice = 0;
var hPriceStr = "";
var resultArray = new Array();
for (var i = 0; i < timeArray.length; i++) {
var bar = /(^06|^07|^08|^09|^10|^11)/;
if (bar.test(timeArray[i])) {
var sp = $(price[i]).text().split("₹")[1];
var tempPrice = Number(sp.replace(",", ""));
if (highestPrice < tempPrice) {
highestPrice = tempPrice;
hPriceStr = sp;
}
resultArray.push(timeArray[i]);
}
};
var selector = ".master > .abc > .cost > label:contains('₹" + hPriceStr + "')"
$(selector).css("background", "#ff9900");
//console.log(highestPrice);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="master">
<div class="abc">
<div class="time"><span>06:05 NonStop</span></div>
<div class="cost"><label class><span>₹2,987</span><label></div>
</div>
<div class="abc">
<div class="time"><span>03:05 NonStop</span></div>
<div class="cost"><label class><span>₹4,976</span><label></div>
</div>
<div class="abc">
<div class="time"><span>07:05 NonStop</span></div>
<div class="cost"><label class><span>₹8,976</span><label></div>
</div>
<div class="abc">
<div class="time"><span>08:15 NonStop</span></div>
<div class="cost"><label class><span>₹1,976</span><label></div>
</div>
<div class="abc">
<div class="time"><span>15:45 NonStop</span></div>
<div class="cost"><label class><span>₹9,976</span><label></div>
</div>
</div>
Я думаю, что наилучшей практикой для использования в этом случае является: при рендеринге html добавьте атрибут к элементу span.
example:
<div class="abc">
<div class="time"><span intime="0305">03:05 NonStop</span></div>
<div class="cost"><label class><span>₹4,976</span><label></div>
</div>
, затем
var timeSlots = $(".master > .abc > .time > span").each(function(i, e){
var time = $(this).attr('intime');
if( parseInt(time) > 0600 && parseInt(time) < 1200)
{
resultArray.push( $(this).val() );
}
};
Привет, парень, я думаю, вы можете использовать объект массива и легкий вес кода
var arrdata = [];
$.each($(".abc"), function (index, data) {
arrdata.push(
{
index : index ,
time: $(".abc:eq("+index+") > .time span").text() ,
price: $(".abc:eq("+index+") > .cost span").text().split("₹")[1]
});
});
var maxdata= [];
$.each(arrdata, function (index, data) {
if (index === 0 )
{
maxdata = arrdata[index];
}
else
{
if (arrdata[index].price > maxdata.price )
{
maxdata = arrdata[index];
}
}
})
console.log(maxdata);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="master">
<div class="abc">
<div class="time"><span>06:05 NonStop</span></div>
<div class="cost"><label class><span>₹2,987</span><label></div>
</div>
<div class="abc">
<div class="time"><span>03:05 NonStop</span></div>
<div class="cost"><label class><span>₹4,976</span><label></div>
</div>
<div class="abc">
<div class="time"><span>15:45 NonStop</span></div>
<div class="cost"><label class><span>₹9,976</span><label></div>
</div>
<div class="abc">
<div class="time"><span>07:05 NonStop</span></div>
<div class="cost"><label class><span>₹8,976</span><label></div>
</div>
<div class="abc">
<div class="time"><span>08:15 NonStop</span></div>
<div class="cost"><label class><span>₹1,976</span><label></div>
</div>
</div>