我是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)

10-07 19:10
查看更多