Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对复杂的对象数组进行排序,并且对象再次包含一个数组_Javascript - Fatal编程技术网

Javascript 对复杂的对象数组进行排序,并且对象再次包含一个数组

Javascript 对复杂的对象数组进行排序,并且对象再次包含一个数组,javascript,Javascript,我知道排序问题被问了很多次,但我面临着一个稍微不同的问题,我已经搜索并尝试了不同的东西,但没有成功地排序我的数组。如果有人能帮我做这件事,你的帮助将非常感激。我是编程新手 这是我的阵列:- var People = [ {Name: [ {name: "Name", surname: "100-150"}, {name: "AAA", surname: "1-10"}, {name: "Name", surnam

我知道排序问题被问了很多次,但我面临着一个稍微不同的问题,我已经搜索并尝试了不同的东西,但没有成功地排序我的数组。如果有人能帮我做这件事,你的帮助将非常感激。我是编程新手

这是我的阵列:-

var People = [
        {Name: [ {name: "Name", surname: "100-150"},
                 {name: "AAA", surname: "1-10"},
                 {name: "Name", surname: "251-300"},
                {name: "Name", surname: "10-99"},
                {name: "Name", surname: "201-250"},
                {name: "Name", surname: "152-200"}], Middlename: "JJ"},

          {Name: [ {name: "Name", surname: "100-150"},
                 {name: "AAA", surname: "1-10"},
                 {name: "Name", surname: "251-300"},
                {name: "Name", surname: "10-99"},
                {name: "Name", surname: "201-250"},
                {name: "Name", surname: "152-200"}], Middlename:"Abrams"},
          {Name: [ {name: "Name", surname: "100-150"},
                 {name: "AAA", surname: "1-10"},
                 {name: "Name", surname: "251-300"},
                {name: "Name", surname: "10-99"},
                {name: "Name", surname: "201-250"},
                {name: "Name", surname: "152-200"}], Middlename: "Wars"},
         {Name: [ {name: "Name", surname: "100-150"},
                 {name: "AAA", surname: "1-10"},
                 {name: "Name", surname: "251-300"},
                {name: "Name", surname: "10-99"},
                {name: "Name", surname: "201-250"},
                {name: "Name", surname: "152-200"}], Middlename: "Wars"}

];
以下是我尝试过的:

doSorting: function(People) {

        for(var x = 0; x < People.length; x++){
          for(var y=0;y<People.Name.length; y ++){
            People.Name[y] = People.Name[y].sort(function(obj1,obj2){
              return obj1.surname.split("-")[0] - obj2.surname.split("-")[0];
            });
          }

        }

        return People;
    }
    console.log(People);
doSorting:功能(人){
for(var x=0;x对于(var y=0;y你有一个循环太多了。
People.Name[y]
(必须是
People[x].Name[y]
)不是一个可以排序的数组,而是一个单独的对象。你需要

for (var x = 0; x < People.length; x++){
    People[x].Name.sort(function(obj1, obj2) {
        return obj1.surname.split("-")[0] - obj2.surname.split("-")[0];
    });
}
for(var x=0;x
这将按照姓氏中的第一个数字对每个内部数组(自身)进行排序。

由于parseInt()和parseFloat()也将截断数字后字符串中的所有内容,因此您还可以编写:

People.forEach(group => {
  group.Name.sort((a,b) => parseInt(a.surname) - parseInt(b.surname))
})
var-People=[
{
姓名:[
{姓名:“姓名”,姓氏:“100-150”},
{姓名:“AAA”,姓氏:“1-10”},
{姓名:“姓名”,姓氏:“251-300”},
{姓名:“姓名”,姓氏:“10-99”},
{姓名:“姓名”,姓氏:“201-250”},
{姓名:“姓名”,姓氏:“152-200”}
], 
中间名:“JJ”
},
{
姓名:[
{姓名:“姓名”,姓氏:“100-150”},
{姓名:“AAA”,姓氏:“1-10”},
{姓名:“姓名”,姓氏:“251-300”},
{姓名:“姓名”,姓氏:“10-99”},
{姓名:“姓名”,姓氏:“201-250”},
{姓名:“姓名”,姓氏:“152-200”}
], 
中间名:“艾布拉姆斯”
},
{
姓名:[
{姓名:“姓名”,姓氏:“100-150”},
{姓名:“AAA”,姓氏:“1-10”},
{姓名:“姓名”,姓氏:“251-300”},
{姓名:“姓名”,姓氏:“10-99”},
{姓名:“姓名”,姓氏:“201-250”},
{姓名:“姓名”,姓氏:“152-200”}
], 
Middlename:“战争”
},
{
姓名:[
{姓名:“姓名”,姓氏:“100-150”},
{姓名:“AAA”,姓氏:“1-10”},
{姓名:“姓名”,姓氏:“251-300”},
{姓名:“姓名”,姓氏:“10-99”},
{姓名:“姓名”,姓氏:“201-250”},
{姓名:“姓名”,姓氏:“152-200”}
], 
Middlename:“战争”
}
];
People.forEach(组=>{
group.Name.sort((a,b)=>parseInt(a.姓氏)-parseInt(b.姓氏))
})
console.log(人);

。作为控制台包装{top:0;max height:100%!important}
您甚至没有告诉我们您希望这些项目如何排序……您到底想做什么?您能解释一下吗please@izengod我正试着根据surname@CBroe我想根据“姓氏”对它进行排序,我想你指的是
人[x].Name.sort
@HarshGupta谢谢,确实需要that@Bergi我刚试过,但效果不理想,它说无法读取属性“拆分”@JustStartedProgramming它确实适用于您发布的
人员
对象。您确定所有要在实际数据中排序的对象都有
姓氏
?@JustStartedProgramming那么您应该在问题中发布这样的实际数据……不管怎样,您希望如何对没有姓氏的项目进行排序?