Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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_Arrays_Sorting_Object_Multidimensional Array - Fatal编程技术网

Javascript:排序对象挑战

Javascript:排序对象挑战,javascript,arrays,sorting,object,multidimensional-array,Javascript,Arrays,Sorting,Object,Multidimensional Array,我有一点挑战。我正在用javascript开发一个物理应用程序。使用的两个主要对象是 var force = new Object(); var torque = new Object(); with properties force.magnitude = newArray(); force.lengthfromorigin = new Array(); force.count; torque.lengthfromorigin= new Array(); torque.count; 现在,我

我有一点挑战。我正在用javascript开发一个物理应用程序。使用的两个主要对象是

var force = new Object();
var torque = new Object();
with properties
force.magnitude = newArray();
force.lengthfromorigin = new Array();
force.count;
torque.lengthfromorigin= new Array();
torque.count;
现在,我想根据这两个对象各自的Length FromOriginance将其排序为一个数组

示例:force.lengthfromorigin=[5,8]和torque.lengthfromorigin=[2,6] 所以它们在这个新数组中的顺序是[torque[0],force[0],torque[1],force[1]]

我的问题是否可以将不同对象的数组按其各自的属性进行排序,然后在函数中使用此数组,该函数将根据索引中的对象做出决策。我还需要在每个相应的对象中都有一个id属性,以确定该对象是扭矩还是力

例如:

if(newArray[i] == torque)
    //do stuff
else
    //do other stuff.

也许是这样的

让我解释一下算法:

  • 创建一个新数组,将其命名为a
  • 对于
    对象中的每个对象

    2.1将当前对象称为obj

    if(Mydata[i].Name = 'torque'){
      //your code goes here
    }
    else if(Mydata[i].Name = 'force'){
      //your code goes here
    }
    
    2.2使用
    map
    生成一个新数组,称为[obj,num]元组的tuples 对于每个
    lengthFromOrigin
    obj的编号

    if(Mydata[i].Name = 'torque'){
      //your code goes here
    }
    else if(Mydata[i].Name = 'force'){
      //your code goes here
    }
    
    3.3将元组的所有项推入A

  • if(Mydata[i].Name = 'torque'){
      //your code goes here
    }
    else if(Mydata[i].Name = 'force'){
      //your code goes here
    }
    
  • 元组[1](即数字)升序排序A

  • 然后,您可以通过查看元组中的第一个元素来循环排序,并轻松确定它是转矩还是力

    sorted.forEach(function (tuple) {
        console.log(tuple[0].type, tuple[1]);
    });
    
    //torque 2
    //force 5
    //torque 6
    //force 8 
    

    答案是肯定的

    但是,在访问每个对象的属性之前,必须识别它们。在您的情况下,这两个对象都有一个名为lengthfromorigin的公共属性,可用于对它们进行正确排序

    要识别每个对象,可以使用类似于IDName的属性

    if(Mydata[i].Name = 'torque'){
      //your code goes here
    }
    else if(Mydata[i].Name = 'force'){
      //your code goes here
    }
    

    希望这将帮助你

    1)很可能,2)请在下一个例子中使用你的第一个例子。我认为你试图一下子解决太多问题。我会先为一个整数数组编写一个排序方法,然后从那里开始工作。它的伪代码@PsychHalf…为什么不使用面向对象的原则,在每个对象类型上放置一个通用的命名方法,可以为该类型的对象执行所需的代码,这样你就不必看它是什么类型了?@bala,如果您计划经常这样做,显然可以将算法封装到函数中;)