对嵌套对象的javascript数组进行排序

对嵌套对象的javascript数组进行排序,javascript,jquery,arrays,sorting,object,Javascript,Jquery,Arrays,Sorting,Object,我对JavaScript还不熟悉,正在尽可能多地学习,但我觉得我所做的一切已经触礁了 我的问题是,我有一个数组中的对象,每个对象都是一个商店对象,在这是一个“类型”修复对象,具有修复成本的属性 我怎样才能按价格分类呢?到目前为止,请查看我的代码。我需要按价格顺序返回shop对象,因为我仍然需要该店铺的所有信息,但维修价格的顺序取决于所做的选择,因此基本上按选择的顺序返回数组中的shop对象。这可能是不可能的,我不知道,任何想法将不胜感激。我提前感谢你抽出时间 var供应商=[ { 莫斯肖普:{

我对JavaScript还不熟悉,正在尽可能多地学习,但我觉得我所做的一切已经触礁了

我的问题是,我有一个数组中的对象,每个对象都是一个商店对象,在这是一个“类型”修复对象,具有修复成本的属性

我怎样才能按价格分类呢?到目前为止,请查看我的代码。我需要按价格顺序返回shop对象,因为我仍然需要该店铺的所有信息,但维修价格的顺序取决于所做的选择,因此基本上按选择的顺序返回数组中的shop对象。这可能是不可能的,我不知道,任何想法将不胜感激。我提前感谢你抽出时间

var供应商=[
{
莫斯肖普:{
三星:{
屏幕:50,
按钮:10,
背面:20
},
iphone:{
屏幕:10,
按钮:18,
背面:1
}
}
}, {
davesShop:{
三星:{
屏幕:40,
按钮:5,
背面:12
},
iphone:{
屏幕:18,
按钮:148,
背面:11
}
}
}
];
var-arr=[];
//;
$(“#电话,#维修”).change(函数(){
var selectedPhone=$(“#phone:selected”).text().toString();
var selectRepair=$(“#repair:selected”).text().toString();
对于(var i=0;i

三星
苹果手机
废话
废话
屏幕
按钮
返回
废话

要根据
selectedPhone
selectRepair
的值对数组进行排序,您可以像这样使用本机函数-

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]);
    });
} 
然后,您只需通过如下传递
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}}}]

希望这有帮助

请添加结果数组的外观。是否搜索?--其中一个必须是有用的。正如我的代码中所示,但按照所选修复的顺序-最低成本,因此如果davesShop较低,那么它应该首先出现在已排序的对象数组中。非常感谢您的帮助,花时间这正是我要找的。p、 s缺少右大括号。
Object.keys(a).toString()
应该是
Object.keys(a)[0]
。对数组调用
toString()
,并将结果用作属性名是一种误导。