Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:创建一个多项目json_Javascript_Json - Fatal编程技术网

Javascript:创建一个多项目json

Javascript:创建一个多项目json,javascript,json,Javascript,Json,我应该创建这样一个对象: 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"} ]}}; 现在,值的名称(点_1、点_2、

我应该创建这样一个对象:

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"}
]}};
现在,值的名称(点_1、点_2、点_3)位于一个名为points[]的数组中,因此我想动态创建这个对象

我所做的就是这样

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}};
但这不起作用


您能告诉我哪里错了吗?

根据查询结构,过滤器需要包含一个数组,所以将过滤器定义为数组,并直接将对象推送到其中

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

您可以在filters属性内映射所需对象

var points=['点1','点2','点3'],
query={filters:{type:“OR”,filters:points.map(函数(p){
返回{type:“EQ”,fieldName:“name”,值:p};
}) } };
console.log(查询)

。作为控制台包装{最大高度:100%!重要;顶部:0;}
什么是点?但是为什么不直接使用JSON.stringify(query.filters)
?@SmaK
filt
不需要是一个对象。只需将其创建为一个数组