javascript - 强调如何使用each并对多个对象数组进行排序

标签 javascript underscore.js

我的数组中有 2 个集合,每个集合都是一个对象数组。我想使用 _.each 对它们进行排序,并返回一个排序后的对象,其中包含以下内容:

var O1 = [{'name':'one'}, {'name':'two'}, {'name':'three'}, {'name':'four'}, {'name':'five'}, {'name':'six'}];
var O2 = [{'name':'rat'}, {'name':'cat'}, {'name':'lion'}, {'name':'tiger'}, {'name':'dog'}, {'name':'horse'}];

var sortIt = [O1, O2];

_.each(sortIt, function(item){
    item = _.sortBy(item, function(arr){
        return arr.name;
    })
    return item;
})

console.log(O1, "\n", O2); //nothing changed!

...但是,显然没有任何改变。问题是,正确的方法应该是什么?

Live Demo

最佳答案

首先,在排序过程之后检查 O1O2 变量 的值是毫无用处的 - 它们不会改变。请注意,_.sortBy 不会对给定数组进行排序(如 native Array#sort 所做的那样),而是返回一个新的(已排序的)副本。

其次,从 _.each 迭代器函数返回任何内容都没有什么意义 - 它只会被忽略。

最后,要调整列表的特定元素,您需要解决该元素;仅将一些值重新分配给 param 变量(代码中的 item)是不够的。

这是一种实现您想要的方法:

var sortIt = [O1, O2];
_.each(sortIt, function(item, index, list) {
    list[index] = _.sortBy(item, function(arr) {
        return arr.name;
    });
})

console.log(sortIt); // something is definitely changed now!

Demo .

关于javascript - 强调如何使用each并对多个对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575768/

相关文章:

javascript - d3 的双指缩放在 IE/Edge 中不起作用?

react-native - 如何执行 groupBy 并添加在 underscore.js 中分组的值的总和

javascript - 嵌套或展开数组

javascript - 未定义的 id 获取

javascript - 将 findWhere 与数组中的嵌套对象一起使用

javascript - 将对象数组中的多个属性映射到同一个数组

javascript - Onclick函数不显示表格

javascript - 在测试 Meteor 应用程序时设置经过身份验证的用户

javascript - 从字符串中生成 <br/> 在 react 中起作用

javascript - 通过评估元素的数组子集