2016-09-22 22 views
0

外部ファイルからオブジェクトが少ない配列を選択しています。配列内の既存のオブジェクトにプロパティを追加する

app.controller('mycontroller', function($scope, $http) { 
$http.get("file") 
.then(function(response) { 
    $scope.lols = response.data;  
});}); 

これは私のような何かお返しします:使用

$scope.lols = [ 
{ 
    prop1: "h1", 
    prop2: "h2", 
}, 
{ 
    prop1: "g1", 
    prop2: "g2", 
},} 

は今、私はそれを行う必要がありますどのように各オブジェクトにprop3を追加したいですか?私は私のjsファイルにデータを持っていた場合、私はそれを手動で行うが、外部ファイルからデータを取り出すだろう...

私は単純にやって試してみました:

app.controller('mycontroller', function($scope, $http) { 
$http.get("file") 
.then(function(response) { 
    $scope.lols = response.data; 
    $scope.lols.push = [ 
    {prop3: "h3"}, 
    {prop3: "g3"} 
    ] 
});}); 

をしかし、それは働いていません...

ご協力いただきありがとうございます。

SOLUTION: https://jsfiddle.net/d3c96e0z/3/

+1

'$ scope.games.push = ['? – brk

+0

あなたはどのアレイを変更しなければならないのかをより明確にすることができますか? 。ゲームの配列またはlols配列。 :) –

+0

私はhttps:// jsfiddleを達成しようとしています。net/d3c96e0z/ – noway

答えて

0

、同様にしてみてください?あなたがそれを行うことができます その場合はどちらかハードコードされたような

$scope.lols[0].prop3 = "h3"; 
$scope.lols[1].prop3 = "g3"; 

以上動的な方法中を:

var newProps = ["h3", "g3"]; 
for (var i = 0; i < $scope.lols.length; i++) { 
    $scope.lols[i].prop3 = newProps[i]; // assuming the length of both arrays is the same size; 
} 

あなたのアプローチの問題:pushます」既存のインデックスにプロパティを追加するのではなく、配列に新しいインデックスを作成します。私は、これはあなたを助けるべきだと思います

+0

各オブジェクトは異なるprop3値 – noway

+0

あなたはその価値をどこで得るのですか?次に、それらを動的に追加する方法を教えてください。ソースのデータ構造は何ですか? –

+0

あなたのソースが同じ長さの配列であると仮定して、私の答えを動的ソリューションで更新しました。 –

0

あなたはprop3prop1prop2の兄弟になりたいHere is working example $scope.lols.push({prop1: "h3",prop2: "g3"});

+0

これで配列に新しいオブジェクトを追加しましたが、私は外部ファイルから抽出した同じオブジェクトを保持したいだけで、それぞれ1つのプロパティを追加します – noway

1

: -

var lols = [ 
{ 
    prop1: "h1", 
    prop2: "h2", 
}, 
{ 
    prop1: "g1", 
    prop2: "g2", 
} 
] 

Object.keys(lols).map(function(key,index){ 
     var lol = lols[key] 
     lol["props3"]="g3" 
     console.log(lol) 
}) 

JSフィドルリンクhttps://jsfiddle.net/bps7zzf8/

+0

あなたは答えを受け入れることができますか? –

+0

それは私のために動作しません:S – noway

+0

私が達成しようとしているものをここで見つけてくださいhttps://jsfiddle.net/d3c96e0z/ – noway

0

を使用すると、各オブジェクトにprop3を追加したい場合は、このプロセスを試すことができます。

// assume that you know "lols" length. here let 2 so add 2 values for prop3 

$scope.prop3Values = ["yellow", "red"]; 

$scope.lols = $scope.lols.map(function(e,index) { 
    e.prop3 = $scope.prop3Values[index]; // assign your value in prop3 
    return e; 
    }); 

、あなたのlolsは次のようになります

$scope.lols = [ 
{ 
    prop1: "h1", 
    prop2: "h2", 
    prop3: "yellow" 
}, 
{ 
    prop1: "g1", 
    prop2: "g2", 
    prop3: "red" 
}] 
+0

prop3の値が最初のオブジェクトでは "黄色"、次のオブジェクトでは "赤"でなければならない場合はどうなりますか? – noway

+0

'lols'配列の長さと' prop3'に追加する必要がある値があり、配列のすべての値を追加してそれを割り当てる必要がある場合は、https://jsfiddle.net/d3c96e0z/ – noway

+0

を達成しようとしていますインデックスを使用します。私の更新の回答を見てください。 –

0

オブジェクトの配列に追加するプロパティを保持してから、$ scope.lolsをループし、インデックスに従って各プロパティを追加します。

$scope.propertyJson=[{prop3: "h3"},{prop3: "g3"}]; 
for (var i = 0; i < $scope.lols.length; i++) { 
angular.forEach($scope.propertyJson[i], function(value, key) { 
    $scope.lols[i][key] = value; 
}); 
} 
関連する問題