Mo *_*tar 2 javascript arrays sorting jquery object
我是 JavaScript 的新手,我正在尝试尽可能多地学习,但我觉得我正在尝试做的事情已经碰壁了。
我的问题,我有一个对象数组,每个对象是一个商店对象,这是一个“类型”的维修对象,具有维修成本的属性。
我怎样才能按价格排序?到目前为止,请查看我的代码。我需要按价格顺序返回商店对象,因为我仍然需要商店的所有信息,但根据所做的选择按维修价格排序,所以基本上按选择顺序返回商店对象。我不知道这可能是不可能的,任何想法将不胜感激。我提前感谢您的时间。
var vendors = [
{
mosShop: {
samsung: {
screen: 50,
button: 10,
back: 20
},
iphone: {
screen: 10,
button: 18,
back: 1
}
}
}, {
davesShop: {
samsung: {
screen: 40,
button: 5,
back: 12
},
iphone: {
screen: 18,
button: 148,
back: 11
}
}
}
];
var arr = [];
//;
$('#phone,#repair').change(function() {
var selectedPhone = $('#phone :selected').text().toString();
var selectRepair = $('#repair :selected').text().toString();
for (var i = 0; i < vendors.length; i++) {
var mo = Object.keys(vendors[i]);
var t = mo.toString()
var price = vendors[i][t][selectedPhone][selectRepair];
alert(price)
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<select id="phone">
<option value="samsung">samsung</option>
<option value="iphone">iphone</option>
<option value="mercedes">blah</option>
<option value="audi">blah</option>
</select>
<select id="repair">
<option value="screen">screen</option>
<option value="button">button</option>
<option value="back">back</option>
<option value="audi">blah</option>
</select>
<div id="endresults">
</div>Run Code Online (Sandbox Code Playgroud)
`
要根据selectedPhoneand的值对数组进行排序selectRepair,您可以像这样使用本机sort()函数-
function shopPrices(selectedPhone, selectedRepair) {
return vendors.sort(function(a,b) {
var shopA = Object.keys(a)[0];
var shopB = Object.keys(b)[0];
return (a[shopA][selectedPhone][selectedRepair] - b[shopB][selectedPhone][selectedRepair]);
});
}
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地通过传递selectedPhone和selectedRepair值来调用函数,如下所示 -
var sorted = shopPrices('samsung','screen');
//Result -> [{"davesShop":{"samsung":{"screen":40,"button":5,"back":12},"iphone":{"screen":18,"button":148,"back":11}}},{"mosShop":{"samsung":{"screen":50,"button":10,"back":20},"iphone":{"screen":10,"button":18,"back":1}}}]
var anotherTest = shopPrices('iphone','screen');
//Result -> [{"mosShop":{"samsung":{"screen":50,"button":10,"back":20},"iphone":{"screen":10,"button":18,"back":1}}},{"davesShop":{"samsung":{"screen":40,"button":5,"back":12},"iphone":{"screen":18,"button":148,"back":11}}}]
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |