我想建立一個時尚尺碼查找器來幫助客戶找到正確的尺碼。
示例: 胸圍 78-81 厘米對應 XS 碼。
現在我當然可以構建無限數量的陣列,if 和 else 陳述句,但這必須以某種方式更優雅嗎?
$('.sub').click(function(){
var brust = $('#brust').val();
var brustxs = ['78','79','80','81'];
var brusts = ['82','83','84','85'];
var brustm = ['86','87','88','89'];
var brustl = ['90','91','92','93','94','95','96','97'];
var brustxl = ['98','99','100','101','102'];
if( $.inArray(brust, brustxs) !== -1 ) {
alert('found in' ' XS');
}else if ( $.inArray(brust, brusts) !== -1 ) {
alert('found in' ' S');
}else {
alert('nothing');
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input label="brustumfang" value="80" type="text" id="brust">
<input type="submit" class="sub">
uj5u.com熱心網友回復:
您可以擁有一個帶有定義的物件并回圈遍歷它,而無需更改與其匹配的代碼。
例如 :
var sizes = {
xs: [78,79,81],
s: [82,83,84,85]
}
for( var size in sizes ){
vas sizeArray = sizes[size];
if( $.inArray(brust, sizeArray ) > -1 ) {
alert('found in' size );
break; //important bit
}
}
或者為了獲得更好的性能,您可以存盤訂購的尺寸,如:
var sizes = [
{ size: "XS", range:[78,79,80] },
{ size: "S", range:[81,82,83] }
]
或者另一個想法只是存盤每個尺寸的斷點 from to 并檢查尺寸是否適合該范圍,例如:
var sizes = [
{ size: "XS", from: 78, to:80},
{ size: "S", from: 81, to:85},
];
$.each(sizes, function(index,sizeInfo){
//using jQuery each same as foreach for array
if( brust>=sizeInfo.from && brust<=sizeInfo.to ){
alert('found in' sizeInfo.size );
return false; //in jQuery is same as break;
}
});
uj5u.com熱心網友回復:
您可以做的不是將每個值都保存在陣列中,而是保存一個大小陣列,以跟蹤最小值、最大值和標簽。然后您可以簡單地遍歷尺寸并找到匹配的尺寸(其中最小尺寸為 <= brustSize AND 最大尺寸 >= brustSize),如下所示:
let brustSizes = [{min: 78, max: 81, label: 'xs'}, {min: 82, max: 85, label: 's'}, {min: 86, max: 89, label: 'm'}, {min: 90, max: 97, label: 'l'}, {min: 98, max: 102, label: 'xl'}];
function getSize (brustSize) {
let size = brustSizes.find(size => size.min <= brustSize && size.max >= brustSize);
return size && size.label
}
console.log(getSize(81));
console.log(getSize(0));
console.log(getSize(84));
console.log(getSize(87));
console.log(getSize(96));
console.log(getSize(98));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/486720.html
