Javascript 多维数组排序

Javascript 多维数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个javascript多维数组,定义如下:- myArray[0][0] = Some IMage; myArray[0][1] = Some price; myArray[0][2] = Some name; myArray[0][3] = Some values; myArray[0][4] = Some otherValues; myArray[1][0] = Some IMage; myArray[1][1] = Some price; myArray[1][2] = Some n

我有一个javascript多维数组,定义如下:-

myArray[0][0] = Some IMage;
myArray[0][1] = Some price;
myArray[0][2] = Some name;
myArray[0][3] = Some values;
myArray[0][4] = Some otherValues;
myArray[1][0] = Some IMage;
myArray[1][1] = Some price;
myArray[1][2] = Some name;
myArray[1][3] = Some values;
myArray[1][4] = Some otherValues;

现在我的工作是根据价格对它们进行分类。如何做到这一点?

根据我上面的评论,您可能应该使用对象而不是多维数组。下面是一个示例(想象一下您的附加属性,例如包含了
name
IMage
,为了减少键入,我没有包含这些属性)


根据我上面的评论,您可能应该使用对象而不是多维数组。下面是一个示例(想象一下您的附加属性,例如包含了
name
IMage
,为了减少键入,我没有包含这些属性)


以下是答案,不需要判断数据结构,以防有人搜索问题。有时需要这样的“不正确”结构(例如:作为数据表的输入)


以下是答案,不需要判断数据结构,以防有人搜索问题。有时需要这样的“不正确”结构(例如:作为数据表的输入)


数组有一个接受另一个函数作为比较器的排序函数。您可以按如下方式对数据进行排序:

var comparator= function(a,b){
   var price1 = a[1], price2=b[1]; // use parseInt() if your "price" are quoted 
   if( price1 < price2) return -1;
   else return 1;
   return 0;
};
myArray.sort(comparator);
var比较器=函数(a,b){
var price1=a[1],price2=b[1];//如果您的“价格”被引用,请使用parseInt()
如果(价格1<价格2)返回-1;
否则返回1;
返回0;
};
排序(比较器);

数组有一个排序函数,它接受另一个函数作为比较器。您可以按如下方式对数据进行排序:

var comparator= function(a,b){
   var price1 = a[1], price2=b[1]; // use parseInt() if your "price" are quoted 
   if( price1 < price2) return -1;
   else return 1;
   return 0;
};
myArray.sort(comparator);
var比较器=函数(a,b){
var price1=a[1],price2=b[1];//如果您的“价格”被引用,请使用parseInt()
如果(价格1<价格2)返回-1;
否则返回1;
返回0;
};
排序(比较器);

从马歇尔那里借来的

var myArray = [];
myArray.push({
    image: 'some image',
    price: 1.5,
    name: 'name',
    values: 'values',
    otherValues: 'otherValues'
});

myArray.push({
    image: 'some image2',
    price: 0.5,
    name: 'name2',
    values: 'values2',
    otherValues: 'otherValues2'
});

myArray.push({
    image: 'some image3',
    price: 2.5,
    name: 'name3',
    values: 'values3',
    otherValues: 'otherValues3'
});

myArray.sort(function (a, b) {
    return a.price - b.price;
});

alert(myArray[0].price);
alert(myArray[1].price);
alert(myArray[2].price);

从马歇尔那里借来的

var myArray = [];
myArray.push({
    image: 'some image',
    price: 1.5,
    name: 'name',
    values: 'values',
    otherValues: 'otherValues'
});

myArray.push({
    image: 'some image2',
    price: 0.5,
    name: 'name2',
    values: 'values2',
    otherValues: 'otherValues2'
});

myArray.push({
    image: 'some image3',
    price: 2.5,
    name: 'name3',
    values: 'values3',
    otherValues: 'otherValues3'
});

myArray.sort(function (a, b) {
    return a.price - b.price;
});

alert(myArray[0].price);
alert(myArray[1].price);
alert(myArray[2].price);

Javascript多标准/多参数排序

如果要按单个值或多个值对数组进行排序,可以定义以下函数:

function sortByCriteria(data, criteria) {
    return data.sort(function (a, b) {

        var i, iLen, aChain, bChain;

        i = 0;
        iLen = criteria.length;
        for (i; i < iLen; i++) {        
            aChain += a[criteria[i]];
            bChain += b[criteria[i]];
        }

        return aChain.localeCompare(bChain);
    });
}

Javascript多标准/多参数排序

如果要按单个值或多个值对数组进行排序,可以定义以下函数:

function sortByCriteria(data, criteria) {
    return data.sort(function (a, b) {

        var i, iLen, aChain, bChain;

        i = 0;
        iLen = criteria.length;
        for (i; i < iLen; i++) {        
            aChain += a[criteria[i]];
            bChain += b[criteria[i]];
        }

        return aChain.localeCompare(bChain);
    });
}


我想说,不要使用那样的多维数组。有一个存储信息的对象数组,然后对对象进行排序。如何使用对象存储值?我应该将这些值保存为myArray[0][“image”]=some image。。etc?应该类似于
var arr=[];arr.push({img:'',价格:99,名称:'name',值:123,其他值:987})假设您将多个对象推到这个数组中。然后,您可以通过
arr[0]访问第一个对象的价格。价格
,第二个对象通过
arr[1]。价格
。好的,谢谢!我将实现这一点:您有两个数组,其中包含价格值
myArray[0]
myArray[1]
。是否希望每个数组单独排序?是否要将所有价格值排序在一起,然后替换为一个数组中的前5个值和第二个数组中的最后5个值?你要怎么分类?如果不知道这一点,我们就无法回答这个问题。我会说,不要使用那样的多维数组。有一个存储信息的对象数组,然后对对象进行排序。如何使用对象存储值?我应该将这些值保存为myArray[0][“image”]=some image。。etc?应该类似于
var arr=[];arr.push({img:'',价格:99,名称:'name',值:123,其他值:987})假设您将多个对象推入该数组。然后,您可以通过
arr[0]访问第一个对象的价格。价格
,第二个对象通过
arr[1]。价格
。好的,谢谢!我将实现这一点:您有两个数组,其中包含价格值
myArray[0]
myArray[1]
。是否希望每个数组单独排序?是否要将所有价格值排序在一起,然后替换为一个数组中的前5个值和第二个数组中的最后5个值?你要怎么分类?不知道这一点,我们无法回答这个问题。只是一个小小的疑问。如果我有5个不同数组中的值,我将如何创建上面的对象?5个不同数组是什么意思?每个数组存储什么?第一个数组有价格,第二个数组有名称n so n so。我只想说,考虑到这些价值观,我怎样才能制造出这样的物体呢?换句话说,如何将这些值推送到objectso中,因此如果您有
var name=['Tim',Prashant']
var prices=[12,25]
您可以执行
var arr=[];对于(var i=0,l=names.length;i
,然后排序。这与您的意思相符吗?该脚本要求单独的数组具有相同的长度。它基于
名称
数组进行循环。这不是防弹的。而且不会像您使用这些断开连接的阵列那样长。只是一个小小的疑问。如果我有5个不同数组中的值,我将如何创建上面的对象?5个不同数组是什么意思?每个数组存储什么?第一个数组有价格,第二个数组有名称n so n so。我只想说,考虑到这些价值观,我怎样才能制造出这样的物体呢?换句话说,如何将这些值推送到objectso中,因此如果您有
var name=['Tim',Prashant']
var prices=[12,25]
您可以执行
var arr=[];对于(var i=0,l=names.length;i
,然后排序。这与您的意思相符吗?该脚本要求单独的数组具有相同的长度。它基于
名称
数组进行循环。这不是防弹的。而且不会像您使用这些断开连接的阵列那样长。