lodash 对 javascript 中的对象数组进行排序
lodash sorting an array of objects in javascript
我有一个来自服务器的对象响应数组,我试图按 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: []
};
你不需要那么多循环:
_.forEach(res.results, function(result) {
result.data = _.sortBy(result.data, function(datum) {
return datum.row[1].uid;
});
});
您只需要遍历结果,每个结果可能都有一个您要排序的数据数组。 sortBy
回调然后获取该数组的每个元素,并且应该 return 要比较的值。
我有一个来自服务器的对象响应数组,我试图按 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: []
};
你不需要那么多循环:
_.forEach(res.results, function(result) {
result.data = _.sortBy(result.data, function(datum) {
return datum.row[1].uid;
});
});
您只需要遍历结果,每个结果可能都有一个您要排序的数据数组。 sortBy
回调然后获取该数组的每个元素,并且应该 return 要比较的值。