Nic*_*ard 6 javascript arrays sorting
我有一个javascript array我需要按照预定义的顺序排序.它似乎是随机的,但它们确实需要按特定顺序排列.
这是我开始的地方,但不知道如何完成:
// Items
var items = ["Apples", "Oranges", "Grapes", "Peaches", "Bananas", "Watermelon"];
var itemsOrdered = {};
// Order how I want them
for (i in items) {
var item = items[i];
if (item == 'Apples') {
itemsOrdered['4'] = item;
} else if (item == 'Oranges') {
itemsOrdered['2'] = item;
} else if (item == 'Grapes') {
itemsOrdered['1'] = item;
} else if (item == 'Peaches') {
itemsOrdered['3'] = item;
} else if (item == 'Bananas') {
itemsOrdered['6'] = item;
} else if (item == 'Watermelon') {
itemsOrdered['5'] = item;
}
}
Run Code Online (Sandbox Code Playgroud)
订单应该是:
所有这些项目可能并不总是在数组中.它可能只是苹果和香蕉,但它们仍然需要相同的排序位置.
我必须在创建数组后设置此手动排序顺序,因为我们的系统以随机顺序打印出来,然后我们需要正确排序.
最后,我需要将正确排序的水果放回到数组中.
想法?
Rei*_*ard 10
将您的订单放在一个对象中,如下所示:
var ordering = {};
ordering["Apples"] = 4;
ordering["Oranges"] = 2;
... // etc.
Run Code Online (Sandbox Code Playgroud)
然后使用排序items数组Array.sort(compareFunction(a, b)),传递一个排序函数来检查你的对象ordering(左边作为练习).查看https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort以了解如何compareFunction()使用.
编辑:这是一个实现:
var ordering = {"Apples":4, "Oranges":2, "Grapes":1,
"Peaches":3, "Bananas":6, "Watermelons":5};
var items = ["Apples", "Oranges", "Grapes",
"Peaches", "Bananas", "Watermelons"];
items.sort(function(a,b) { return ordering[a] - ordering[b]; })
> ["Grapes", "Oranges", "Peaches", "Apples", "Watermelons", "Bananas"]
Run Code Online (Sandbox Code Playgroud)
尝试:
var items = ["Apples", "Bananas", "Watermelons"];
var itemsOrdered = [];
var theOrder = ["Grapes", "Oranges", "Peaches", "Apples", "Watermelons", "Bananas"];
for (var i = 0; i < theOrder.length; i++) {
if (items.indexOf(theOrder[i]) > -1) {
itemsOrdered.push(theOrder[i]);
}
}
console.log(itemsOrdered);
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/JPNGS/
订单的定义是theOrder.items包含可用的项目.itemsOrdered包含可用的商品,已订购.
| 归档时间: |
|
| 查看次数: |
4648 次 |
| 最近记录: |