gpt4 book ai didi

javascript - 使用 lodash 根据 float 对对象数组进行排序

转载 作者:行者123 更新时间:2023-11-30 11:43:43 25 4
gpt4 key购买 nike

我有一个这样的 Javascript 数组:

var list = [{Name: 'X', Value: 140.000},
{Name: 'Y', Value: 200.000},
{Name: 'Z', Value: 50.000}]

(它有更多的属性,但为简洁起见已被省略)。

我创建了一个函数,它使用传递给该函数的属性名称对该列表进行排序。我已经使用 lodash 轻松完成了这项工作,但如果我对值进行排序,这些值似乎被视为字符串并且排序错误。

这是我的排序函数(到目前为止)

function sortByField(fieldName)
{
list = _.sortBy(list, fieldName);

//afterwards I call reverse() if the sortDirection is descending, but I omitted this part for brevity
}

按值排序后,我得到以下数组:

var list = [{Name: 'X', Value: 140.000},
{Name: 'Y', Value: 200.000},
{Name: 'Z', Value: 50.000}]

您可以看到它像对待字符串一样对待值,即使它们是十进制数字。 “Z”对象应该是第一个。我该如何解决这个问题?

我一直在搜索 lodash 文档,但似乎找不到与此问题相关的任何内容。有什么帮助吗?将不胜感激。

编辑:我刚刚意识到值属性是通过网页(输入控件)填写的,因此 Javascript 实际上将它作为字符串添加到数组中,这可能会导致问题。我能以某种方式将其转换为 float 吗?还是我必须求助于 Javascript 的内置排序功能并创建我自己的比较?

最佳答案

您发布的内容:

var list = [{Name: 'X', Value: 140.000},
{Name: 'Y', Value: 200.000},
{Name: 'Z', Value: 50.000}];

list = _.sortBy(list, 'Value');
console.log(list);

应该按预期工作。

http://jsbin.com/fegifibasu/edit?js,console

现在,如果出于某种原因(如您所述),值字段包含字符串而不是 float ,那么您将需要编写“自定义”排序函数。例如:

var list = [{Name: 'X', Value: '140.000'},
{Name: 'Y', Value: '200.000'},
{Name: 'Z', Value: '50.000'}];

list = _.sortBy(list, function(o) {
return parseFloat(o.Value);
});
console.log(list);

http://jsbin.com/gagelipuza/edit?js,console

关于javascript - 使用 lodash 根据 float 对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41723465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com