2017-12-05 15 views
-4

私はp5.jsのオブジェクトの配列で作業しています。オブジェクトの値に関連する条件が満たされている場合、それらの有効なオブジェクトを保持する別の配列を作成します。サブアレイ内のオブジェクトの値を変更すると、「メイン」配列内のオブジェクトの値が変更されますか?

'有効なオブジェクト'配列と 'メイン'配列の両方のオブジェクトの値を変更したいとします。私が '有効なobj'配列から変更すると、それも 'main'配列から変更されますか?

var objects[]; 
var validObjects[]; 

function setup() { 
    createObj(); 
    myFunc2(); 
} 

function object(name, condition) { 
    // Define a class called 'object'. 
    this.name = name; 
    this.condition = condition; 
} 

function createObj() { 
    objects[0] = new object('obj0', true); 
    objects[1] = new object('obj1', true); 
    objects[2] = new object('obj2', false); 
    objects[3] = new object('obj3', false); 
} 

function myFunc() { 
    // Pick out the valid objects and put them into another array. 
    for(var i = 0; i < objects.length; i++) { 
     if(objects[i].condition == true) 
      validObjects.push(objects[i]); 
} 

function myFunc2() { 
    // Change a field of the objects from the new array. 
    for(var i = 0; i < validObjects.length; i++) 
     objects[i].condition = !objects[i].condition; 
} 

myFunc2は、()永遠にオブジェクトの状態フィールドを変更していますか?それとも私はこれに違ってアプローチすべきですか?

EDITS:構文が修正されました。

+0

'object [i] .condition'はおそらく' objects [i] .condition'でしょうか? ( 's'が見つからないことに注意してください)つまり、コードを実行しようとしましたか?あなたがそうするならば、質問に対する答えはかなり明白でなければならず、結果を見てください。 – Cerbrus

+2

これをテストして自分で質問に答えることができます。 – rweisse

+1

'有効なobj配列から変更すると、 'main'配列からも変更されますか? - テストしてお知らせください。 – Nope

答えて

0

はい、すべてのオブジェクトは値ではなく、参照によって割り当てられています。オブジェクトのコピーを作成するには、そのオブジェクトを複製する必要があります。

var clone = Object.assign({}, cloneTarget); 

はまた、上の構文:

objects[0] = new object(obj0, true); 

は、あなたがliteralsなくidentifiers正しいにこれらの名前を変更する必要がありますオフされるように思えますか?

objects[0] = new object('obj0', true); 
+0

OPからのコード例を 'new object()' – Cerbrus

+0

というように読み込むことはできません。彼はコンストラクタとして定義した関数の識別子を使用します。 'new object() 'の構文を有効にする。 –

+0

ああ、それを逃した... – Cerbrus

関連する問題