jQuery创建具有选定属性和值的对象

Posted

技术标签:

【中文标题】jQuery创建具有选定属性和值的对象【英文标题】:jQuery create object with selected attribute and value 【发布时间】:2021-09-03 04:14:29 【问题描述】:

我有不同的国家、城市、邮编选择选项。 现在我的要求是当有人从下拉列表中更改值时,它应该创建一个具有选定值的数组对象。所以为了实现这一点,我做了这样的事情

var SearchParams = [];

jQuery('.form-type-select').each(function() 
    let Attribute = jQuery(this).attr('data-attribute-name');
    
    $(this).find("input[type='checkbox']:checked").each(function(i, e)
    obj = ;
        var self = jQuery(this).val();
        if( Attribute == 'country' ) 
            obj[Attribute] = self;
        

        if( Attribute == 'city' ) 
            obj[Attribute] = self;
        
        SearchParams.push(obj);
    );
);

console.log(SearchParams);

它显示这样的输出

[
    country: 'France'
    country: 'UK'
    country: 'Spain'
    city : 'Toulouse'
    city : 'Lyon'
    city : 'Yorkshire'
]

但我希望输出应该是这样的

[
    country: 'France', 'UK', 'Spain'
    city : 'Toulouse', 'Lyon', 'Yorkshire'
]

那么有人可以告诉我如何实现这一目标吗?任何帮助和建议都会非常感激。

【问题讨论】:

【参考方案1】:

您在每次迭代时创建新的 JSON 对象,即:obj = ;。相反,您可以简单地创建键 SearchParams["country"],然后将值推送到此键中。

演示代码

var SearchParams = ; //create obj
SearchParams["country"] = new Array() //create keys..
SearchParams["city"] = new Array()
jQuery('.form-type-select').each(function() 
  let Attribute = jQuery(this).attr('data-attribute-name');
  $(this).find("input[type='checkbox']:checked").each(function(i, e) 
    var self = jQuery(this).val();
    if (Attribute == 'country') 
      SearchParams["country"].push(self); //push inside key...
    
    if (Attribute == 'city') 
      SearchParams["city"].push(self);
    
  );
);

console.log(SearchParams);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<div class="form-type-select" data-attribute-name="country"><input type="checkbox" value="1" checked></div>
<div class="form-type-select" data-attribute-name="city"><input type="checkbox" value="2" checked></div>
<div class="form-type-select" data-attribute-name="country"><input type="checkbox" value="7" checked></div>
<div class="form-type-select" data-attribute-name="city"><input type="checkbox" value="45" checked></div>

【讨论】:

以上是关于jQuery创建具有选定属性和值的对象的主要内容,如果未能解决你的问题,请参考以下文章

如何使用变量创建具有索引和值的 Javascript 对象?

如何使用 Swifty 动态创建具有多个键和值的 json 对象

使用 databricks 在 Spark(scala) 中生成具有属性和值的 XML

PHP XML 到具有属性和值的数组/对象

LINQ:获取包含具有特定名称和值的属性的数组中的对象

jQuery