1

少し課題があります。私は、javascript を使用して物理アプリケーションに取り組んでいます。使用されている 2 つの主なオブジェクトは次のとおりです。

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;

ここで、これら 2 つのオブジェクトを、それぞれの lengthfromorigins に基づいて配列に並べ替えたいと思います。

例: force.lengthfromorigin = [5,8] および Torque.lengthfromorigin=[2,6] したがって、この newArray での順序は [ トルク[0]、力[0]、トルク[1]、力[1] ] になります。

私の質問は、さまざまなオブジェクトの配列をそれぞれのプロパティでソートし、この配列を関数で使用して、どのオブジェクトがインデックスにあるかに基づいて決定を下すことができるということです。また、オブジェクトがトルクか力かを識別するために、それぞれのオブジェクトに id プロパティが必要です。

例:

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

2 に答える 2

2

もしかしてこういうこと?

アルゴリズムを説明しましょう:

  1. Aという名前の新しい配列を作成します。
  2. の各オブジェクトについてobjects:

    2.1 現在のオブジェクトをobjとします。

    2.2 objの各数値に対して [ obj , num]タプルのタプルmapと呼ばれる新しい配列を生成するために使用します。lengthFromOrigin

    3.3タプルのすべてのアイテムをAにプッシュします。

  3. tuple[1] (数値) でAを昇順で並べ替えます。

var objects = [
        { type: 'force', lengthFromOrigin: [5, 8] },
        { type: 'torque', lengthFromOrigin: [2, 6] }
    ],
    sorted = objects.reduce(function (arr, obj) {
        arr.push.apply(arr, obj.lengthFromOrigin.map(function (num) {
            return [obj, num];
        }));

        return arr;           
    }, []).sort(function (a, b) {
        return a[1] - b[1];    
    });

console.log(sorted);

次にループして、タプルの最初の要素を調べることで、それがトルクなのか力なsortedのかを簡単に識別できます。

sorted.forEach(function (tuple) {
    console.log(tuple[0].type, tuple[1]);
});

//torque 2
//force 5
//torque 6
//force 8 
于 2013-10-19T04:46:06.020 に答える
0

答えはイエスです。

ただし、プロパティにアクセスする前に、各オブジェクトを識別する必要があります。あなたの場合 両方のオブジェクトには、lengthfromoriginと呼ばれる共通のプロパティがあり、それらを適切に並べ替えるために使用できます。

各オブジェクトを識別するには、IDNameなどのプロパティを使用できます。

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

これがあなたを助けることを願っています

于 2013-10-19T04:54:32.020 に答える