我是Java语言的初学者,在从该数组中找到键值后,我试图对数组进行排序,例如:
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 49},
{ 'user': 'fred1', 'age': 50 },
{ 'user': 'barney1', 'age': 51 },
{ 'user': 'barney2', 'age': 55 },
{ 'user': 'fred2', 'age': 56 },
{ 'user': 'barney3', 'age': 57 },
{ 'user': 'fred3', 'age': 58 },
{ 'user': 'barney4', 'age': 59 },
{ 'user': 'fred4', 'age': 60 },
];
在此数组中,首先,我想找到值为fred3的用户,然后通过将fred3作为第一个元素来重新排列数组,如下所示
var users = [
{ 'user': 'fred3', 'age': 58 },
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 49},
{ 'user': 'fred1', 'age': 50 },
{ 'user': 'barney1', 'age': 51 },
{ 'user': 'barney2', 'age': 55 },
{ 'user': 'fred2', 'age': 56 },
{ 'user': 'barney3', 'age': 57 },
{ 'user': 'barney4', 'age': 59 },
{ 'user': 'fred4', 'age': 60 },
];
应该搜索第一个元素的键值对。我为此使用lodash,我尝试过
_.map(users, item =>{
let searchedItem = this.isThisItem(item) ? item : null;
// This searchedItem may be null also
let Other = return _.reject(users, item=>{
return searchedItem.value === item.value;
})
//here i want to do sort
}),
isThisItem(item){
// Logic here to match item with other data, if it exist it returns true.
}
谁能帮我完成它?提前致谢。
最佳答案
您可以使用array.filter
删除搜索到的对象。然后,您可以使用自定义排序功能进行排序,然后使用unshift
,可以在数组前面添加值。
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 49},
{ 'user': 'fred1', 'age': 50 },
{ 'user': 'barney1', 'age': 51 },
{ 'user': 'barney2', 'age': 55 },
{ 'user': 'fred2', 'age': 56 },
{ 'user': 'barney3', 'age': 57 },
{ 'user': 'fred3', 'age': 58 },
{ 'user': 'barney4', 'age': 59 },
{ 'user': 'fred4', 'age': 60 },
];
var searchName = "fred3"
var searchedObj = users.filter(function(item){
return item.user === searchName;
})[0];
var result = users.filter(function(item){
return (item.user !== searchName);
}).sort(function(a,b){
return a.age - b.age;
});
result.unshift(searchedObj);
console.log(result)