Javascript 在Node.js模块中使用函数

Javascript 在Node.js模块中使用函数,javascript,node.js,Javascript,Node.js,我在Node.js模块中使用函数时遇到问题。我使用一个自定义排序函数,根据某个属性的值对对象数组进行排序 exports.getResult = function(cards) { cards.sort(sortByField('suit')); ... ... ... return cards; } function sortByField(fieldName) { return function(card1, card2) {

我在Node.js模块中使用函数时遇到问题。我使用一个自定义排序函数,根据某个属性的值对对象数组进行排序

exports.getResult = function(cards) {
    cards.sort(sortByField('suit'));
    ...
    ...
    ...
    return cards;
}

function sortByField(fieldName) {
    return function(card1, card2) {
        return card1[fieldName] < card2[fieldName]
    };
}
exports.getResult=函数(卡片){
卡片分类(sortByField(“suit”);
...
...
...
回程卡;
}
函数sortByField(字段名){
返回功能(卡1、卡2){
返回card1[fieldName]
当我使用getResult函数而不是作为导出,并从同一个文件调用它时,一切都按预期进行。具有最高值的卡对象是第一个,具有最低值的卡对象是最后一个

但是,当我从index.js调用函数作为导出时,排序不会发生。没有错误,函数的其余部分只是以与排序函数之前相同的顺序与数组一起执行


我已经尝试了我能想到的一切。我已经完成了module.exports.sortByField(),我尝试在一个完全独立的模块中要求.sortByField()。我肯定有一个简单的答案,但我就是想不出来

我怀疑它在这两种情况下的工作原理是相同的,但问题是
sort
回调不正确

回调必须返回负数、0或正数,而不是布尔值:如果第一个条目在第二个条目之前,则返回负数;如果它们相同,则返回0;如果第一个条目在第二个条目之后,则返回正数

如果
包含数字,则需要:

return card1[fieldName] - card2[fieldName];
…如果要按升序排序

如果是字符串,则可以使用:


所以我希望我对这一切都不熟悉,但事实证明,我最初发布的代码根本不是问题所在。长话短说,我传递给getResult()函数的数组是一个数组数组,而不是一个对象数组

我正在使用以下代码将卡添加到一组已玩的卡中:

playedCards.push(game.playCard(1, players[0].hand, 3));
函数的作用是导出一个数组:

exports.playCard = function(amount, hand, index) {
    const cards = hand.splice(index, amount);
    return cards;
};
但我应该导出一个单独的对象:

exports.playCard = function(amount, hand, index) {
    const cards = hand.splice(index, amount);
    return cards[0];
};

当您将其用作导出时,请提供代码示例。
exports.playCard = function(amount, hand, index) {
    const cards = hand.splice(index, amount);
    return cards[0];
};