我有一个来自服务器的对象数组响应,我试图按升序对uid进行排序,同时保持整个数组对data
数组完整。 data
数组中的含义有2个元素。我试图查看数组中所有元素中的一个数组中的uid,并确定元素应该如何放置在data
数组中的顺序。
我使用lodash尝试了以下操作,但它似乎无法正常工作,但我觉得我已经接近并想要一些帮助:
// sort by:
console.log(res.results[0].data[0].row[1].uid)
_.forEach(res.results, function(obj) {
_.forEach(data, function(anotherObj) {
_.forEach(row, function(row) {
data.row = _.sortBy(data.row, function(row) {
return row[1].uid;
});
});
});
});
以下是从服务器返回的对象数组:
var res = {
results: [{
columns: ['large', 'medium', 'small'],
data: [{
row: [{
sid: 13,
tid: 427
},
{
uid: 69,
vid: 450,
wid: 65
},
null],
multirow: {
nodule: [{
xid: '427',
properties: {
yid: 13,
zid: 427
}
},
{
aid: '450',
properties: {
uid: 69,
bid: 450,
cid: 65
}
}]
}
},
{
row: [{
sid: 13,
tid: 427
},
{
vid: 432,
uid: 65,
wid: 61
},
null],
multirow: {
nodule: [{
xid: '427',
properties: {
yid: 13,
zid: 427
}
},
{
aid: '432',
properties: {
bid: 432,
uid: 65,
cid: 61
}
}]
}
}]
}],
errors: []
};
答案 0 :(得分:1)
您不需要那么多循环:
_.forEach(res.results, function(result) {
result.data = _.sortBy(result.data, function(datum) {
return datum.row[1].uid;
});
});
您只需迭代结果,每个结果可能都有一个要排序的数据数组。然后sortBy
回调接受该数组的每个元素,并且应该返回要比较的值。