javascript - 根据精确值重新排序数组

标签 javascript arrays object

我想根据嵌套对象的字符串值之一重新排序对象数组。数组必须按此顺序排列。我的尝试有效,但似乎是一个臃肿且可能效率低下的解决方案:

reorder(order) {
    // create array with 4 null positions
    var newOrder = [null, null, null, null];

    // order can have between 0 - 4 objects
    for(var x = 0; x < order.length; x++){

        // based on value, assign predefined positions
        switch (order[x].slug){
            case 'cheeseburger':
                newOrder[0] = order[x];
                break;
            case 'salad':
                newOrder[1] = order[x];
                break;
            case 'fries':
                newOrder[2] = order[x];
                break;
            case 'iceCream':
                newOrder[3] = order[x];
                break;
        }
    }
    console.log(newOrder);
    return newOrder;
}

如何在不创建空位置的情况下重新排序数组?

codepen example

最佳答案

// assume you have the data arr
var arr = [{
  slug: 'cheeseburger'
}, {
  slug: 'salad'
}, {
  slug: 'fries'
}];

function reorder(arr){
// instead of switch, we put the order into an object
var slugOrder = {
  cheeseburger: 0,
  salad: 1,
  fries: 2
};

// with the native sort function you can get expected results
return arr.sort(function(itemA, itemB) {
  return slugOrder[itemA] - slugOrder[itemB]
});
}
console.log(reorder(arr));

关于javascript - 根据精确值重新排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43776825/

相关文章:

javascript - Angularjs 日期格式在浏览器上不一致?

javascript - Nodejs 响应的第二级对象出错

java - JAVA数组中的对象是互斥的吗?

javascript - 监控对象属性的变化

javascript - 通过键盘导航表格?

javascript - 如何解析在另一个文档中声明的 javascript 变量?

c++ - Dev C++ 上出现了一个奇怪的 sizeof() 错误

java - 使用 Java 将数据存储在 JSON 文件中

javascript - 如何访问此嵌套 javascript 对象中的嵌套键?

android - 获取对象标签的字符串