2016-08-16 6 views
-1

私は以下のコードのようにjavascriptでオブジェクトを使用する方法を学んでいます。javascriptのオブジェクトリファレンス

let arr1 = [1, 2, 3]; 
let arr2 = [4, 5, 6]; 
let arr3 = [10]; 
let arr4 = [...arr1, ...arr2, ...[7,8,9], ...arr3]; 

function myFunc() { 
    let result = 0; 
    let obj = {}; 
    let arr = []; 
    for (let value of arguments) { 
     result += value; 
     obj.keys = value; 
     arr.push(obj); 
    } 
    return [result, arr]; 
} 

console.log(myFunc(...arr4)[0]); 
console.log(myFunc(...arr4)[1]); 

このような結果が期待されました。 [ { keys: 1 }, { keys: 2 }, { keys: 3 }, { keys: 4 }, { keys: 5 }, { keys: 6 }, { keys: 7 }, { keys: 8 }, { keys: 9 }, { keys: 10 } ]

しかし、結果はそのようなものです: 55 [ { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 }, { keys: 10 } ]

私はそれが基準の問題だと思います。最後の '値'は10なので、すべての値が変更されました10.私は理解しましたが、私はバグを修正できません。どのように私が望む結果を得ることができますか?

答えて

2

あなたは、そうでなければ、反復ごとに同じオブジェクトを使用し続ける、ループ内でごobj変数を作成する必要があります。あなたがいる

var myStringArray = ["Hello","World"]; 
 
var arrayLength = myStringArray.length; 
 
for (var i = 0; i < arrayLength; i++) { 
 
    alert(myStringArray[i]); 
 
    //Do something 
 
}

+0

はどうもありがとうございました!!!今私は理解した。 – BlueFlag

0

forループの前に1つのオブジェクトを作成し、ループを回るたびにkeysプロパティを変更します。

ループを回るたびに新しいオブジェクトを作成する必要があります。

ループを作成するコード行をループ内に移動します。

0

使用ループをループ上で同じオブジェクトobjを操作し、それを10回押します。最終的にarrのすべての要素が同じオブジェクトを指しています。

ループ内にobjと宣言してください。単にarr.push({keys: value})としてください。

0

よう

function myFunc() { 
    let result = 0; 
    let arr = []; 
    for (let value of arguments) { 
     let obj = {}; 
     result += value; 
     obj.keys = value; 
     arr.push(obj); 
    } 
    return [result, arr]; 
} 
0

"arr.push(obj);"あなたの場合には、あなたがループ内でそれを初期化する必要があり、同じオブジェクトOBJを何度も追加されます。

for (let value of arguments) { result += value; let obj = {keys: value}; arr.push(obj); }

+0

あなたはそうです。何度もオブジェクトobjを作った。わかりませんでした。ありがとうございました。 – BlueFlag

関連する問題