2017-09-22 26 views
-2

複数項目のJSONを作成する:Javascriptを:私はこのようなオブジェクトを作成する必要が

var query = {"filters":{"type":"OR","filters":[ 
    {"type":"EQ","fieldName":"name", "value":"Point_1"}, 
    {"type":"EQ","fieldName":"name", "value":"Point_2"}, 
    {"type":"EQ","fieldName":"name", "value":"Point_3"} 
]}}; 

次に、値(point_1、point_2、point_3)の名前は、アレイ内にあるので、点[]と呼ばこのオブジェクトを動的に作成したいと思います。

私がやったことは、この

var filt = {filters:[]}; 
for(var i in points){ 
    filt.filters.push({"type":"EQ","fieldName":"name","value":points[i]}); 
} 
var query = {"filters":{"type":"OR","filters":filt}}; 

であるが、これは動作しません。

私が間違っている場所を教えてもらえますか?

+0

?しかし、単に 'JSON.stringify(query.filters)'を使うのではないのですか? – lumio

+0

@SmaK 'filt 'はオブジェクトである必要はありません。ちょうどそれを配列として作成する –

答えて

0

クエリ構造ごとに、フィルタには配列が含まれている必要があります。そのため、フィルタを配列として定義し、オブジェクトを直接そのオブジェクトにプッシュします。

var filters = []; 
for(var i in points){ 
    filters.push({"type":"EQ","fieldName":"name","value":points[i]}); 
} 
var query = {"filters":{"type":"OR","filters":filters}}; 
+0

それは動作します。 ありがとう – SamK

0

filtersプロパティの中に目的のオブジェクトをマップできます。ポイントは何

var points = ['Point_1', 'Point_2', 'Point_3'], 
 
    query = { filters: { type: "OR", filters: points.map(function (p) { 
 
     return { type: "EQ", fieldName: "name", value: p }; 
 
    }) } }; 
 

 
console.log(query);
.as-console-wrapper { max-height: 100% !important; top: 0; }

関連する問題