对列表元素node.js进行排序

时间:2017-10-22 20:35:34

标签: javascript node.js sorting module

我在node.js中编码的模块接受一个项目的名称和价格,将其附加到一个数组,然后输出按升序价格(从最低到最高)排序的那些项目的列表。我在排序部分遇到麻烦;每次我通过我的测试代码运行模块时,它都会给我一个" TypeError:无法读取属性' forEach'未定义",我无法弄清楚如何解决这个问题。任何帮助将非常感谢。模块代码:

'use-strict';

let list = [];

exports.addItem = function(name, price) {
    let item = {name:name, price:price};
    list.push(item);
    return list;
};

exports.items = function(){
    list.sort(function(a, b) {
        return a - b;
    })
};

测试代码:

'use strict';

const inventory = require('./inventory.js');

inventory.addItem('milk', 4.00);
inventory.addItem('eggs', 1.20);
inventory.addItem('orange juice', 2.40);

inventory.items().forEach(function (item) {
    console.log(`Item ${item.name} costs ${item.price}`);
});

1 个答案:

答案 0 :(得分:3)

这里要解决两件事:

  1. 您应该从函数返回已排序的数组。
  2. 您应该按价格进行比较(如果您想按价格排序)
  3. 因此排序功能代码应该类似于:

    exports.items = function(){
        return list.sort(function(a, b) {
            return a.price - b.price;
        })
    };