按预定义顺序对javascript数组进行排序 [英] Sort javascript Array in a pre-defined order

查看:123
本文介绍了按预定义顺序对javascript数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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;
    }
}

订单应为:

  • 苹果:4
  • 橘子:2
  • 葡萄:1
  • 桃子:3
  • 香蕉:6
  • 西瓜:5

所有这些项目可能并不总是在阵列中.可能只有苹果和香蕉,但它们仍然需要相同的排序位置.

我必须在创建数组后设置此手动排序顺序,因为我们的系统会按照随机顺序将它们打印出来,然后我们需要对其进行正确排序.

最后,我需要将正确排序的水果放回数组中.

想法?

解决方案

尝试:

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);

演示: http://jsfiddle.net/JPNGS/

订单在theOrder中定义. items包含可用项目. itemsOrdered包含可用的项目,已排序.

I have a javascript array that I need to sort in a pre-defined order. It seems random, but they do need to be in a specific order.

Here is where I started, but am not sure how to finish:

// 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;
    }
}

Order should be:

  • Apples: 4
  • Oranges: 2
  • Grapes: 1
  • Peaches: 3
  • Bananas: 6
  • Watermelon: 5

All of these items might not always be in the array. It might only be Apples and Bananas, but they still need the same sort positions.

I have to set this manual sort order after the array is created because our system prints them out in this random order which we then need to sort correctly.

In the end, I need the correctly sorted fruits back in an array.

Ideas?

解决方案

Try:

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);

DEMO: http://jsfiddle.net/JPNGS/

The order is defined in theOrder. items contains the available items. itemsOrdered contains the available items, ordered.

这篇关于按预定义顺序对javascript数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆