我想根据另一个数组的值对JSON对象/数组(如下所示为myArray
)进行排序 - 非常接近MYSQL查询MYSQL WHERE IN(1,2,3)
。我能够得到一个关于如何按一个属性和值排序的great answer by Nick Craver,但是如何使用其他数组中的多个值来做这个呢?
这是我的数据集Json数组:
var myArray = [
{
"id":"2",
"name":"My name",
"properties":{"prop1":"value1"}
}];
我要排序的数组(序列化,直接来自表单):
var sortArray = [ { "prop1":"value1","prop2":"value2" }];
现在的排序功能(由Nick Craver提供):
function filterDataset(property, value){
var newArray = [];
for (var i = 0, l = myArray.length; i < l; i++) {
if (myArray[i].properties[property] === value)
newArray.push(myArray[i]);
}
return newArray;
}
答案 0 :(得分:1)
以下是我设法修复它的方法:
function filterDataset2(properties){
var newArray = [];
for (var i = 0, l = dataset.length; i < l; i++) {
$.each(properties, function(){
if (dataset[i].properties[this.name] === this.value)
newArray.push(myArray[i]);
});
}
return newArray;
}
答案 1 :(得分:0)
这可能不是你的意思,但如果你有一个已知的属性列表,你可以只是||你的比较?假设你有2个属性...
function filterDataset(property, value){
var newArray = [];
for (var i = 0, l = myArray.length; i < l; i++) {
if ((dataset[i].egenskaper[property1] === value) || (dataset[i].egenskaper[property2] === value) )
newArray.push(myArray[i]);
}
return newArray;
}
否则,如果排序数组的长度未知,则可以使用array.find类型方法,如果在相关数组中找到该属性,则该方法将返回true。如果它返回true,只需在新排序的数组上推送该值。