2017-04-07 91 views
-2

我有一些特定的东西将被推入阵列(下面),我想按项目价格排序项目。我尝试使用sort,但它不适合我。之后,我想循环该数组并检索项目名称和项目价格。排序数组

推项目到数组:array.push(itemName,itemPrice)

尝试使用sort功能:

array.sort(function(a,b){ 
    return b[1] - a[1] 
}); 
+5

请加阵列为好。 –

+0

你将不得不向我们展示数组数据是什么样的,所以我们可以看到如何正确分类。您的代码正在尝试对数组进行排序。 'array.push(itemName,itemPrice)'把两个连续的,单独的值放入数组中。它不会将数组推入数组中。为此,你需要'array.push([itemName,itemPrice])'。 – jfriend00

回答

1

编辑:与妮娜的评论表示赞同。改变比较功能

看起来你需要一个对象数组并定义你自己的比较函数进行排序。

所以你需要元素添加到阵列像这样:

array.push({itemName:name,itemPrice:price}) 

定义自定义比较函数

function compare(a,b) { 
    return a.itemPrice-b.itemPrice; 
} 

使用自定义功能

array.sort(compare) 
+1

你可以使用增量,没有两个比较的开销。 –

1

我想你想的元组(ITEMNAME,ITEMPRICE)推到数组,可以做两种方式:

array.push([itemName, itemPrice]) 

array.push({ itemName: itemName, itemPrice: itemPrice }) 
// and instead of accessing a[1] or b[1], access a.itemPrice and b.itemPrice respectively. 

的Array.push(X,Y)简单地追加两种不同元素的x和y到阵列

0

//排序BY键(和值)。

int[] keys = { 4, 7, 2, 0 }; 
    int[] values = { 1, 2, 3, 4 }; 
    Array.Sort(keys, values); 
    foreach (int key in keys) 
    { 
     Console.Write(key); 
     Console.Write(' '); 
    } 
    Console.WriteLine(); 
    foreach (int value in values) 
    { 
     Console.Write(value); 
     Console.Write(' '); 
    } 
    Console.WriteLine(); 

我希望这会帮助你;)

1

我想你想要做的是将物体不仅仅是值!

array.push({ 
    name: itemName, 
    price: itemPrice 
}); 

然后你就可以使用排序:

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

这里是一个示例代码,玩得开心!

var arr = [ 
 
\t { 
 
\t \t "name": "Item1", 
 
\t \t "price": 100, 
 
\t }, 
 
\t { 
 
\t \t "name": "Item2", 
 
\t \t "price": 500, 
 
\t }, 
 
\t { 
 
\t \t "name": "Item3", 
 
\t \t "price": 250, 
 
\t }, 
 
\t { 
 
\t \t "name": "Item4", 
 
\t \t "price": 1000, 
 
\t } 
 
] 
 

 

 
arr = arr.sort(function compare(a, b) { 
 
    if (a.price > b.price) 
 
    return 1; 
 
    if (a.price < b.price) 
 
    return -1; 
 
    return 0; 
 
}); 
 

 
console.log(arr);