在JSON中搜索关键值对的集合

时间:2015-04-02 09:07:06

标签: jquery json wordpress woocommerce

我列出了JSON对象中所有可能的独特产品变体组合[这就是woocommerce构建它的方式]。比方说,我有一个产品有2种尺寸 - size1和size2和颜色 - color1和color2:

variant_list = [
       {
          "variation_id":328,
          "attributes":{
             "size":"size1",
             "color":"color1"
          }
       },
       {
          "variation_id":329,
          "attributes":{
             "size":"size2",
             "color":"color1"
          }
       },
       {
          "variation_id":330,
          "attributes":{
             "size":"size1",
             "color":"color2"
          }
       },
       {
          "variation_id":331,
          "attributes":{
             "size":"size2",
             "color":"color2"
          }
       ]

如果用户选择了特定的大小和颜色组合(使用单选按钮),例如,选择了size2和color1,我需要将变体ID:329传递给我的后端。使用属性标准set = {" size":" size2"," color":" color1&#34搜索我的JSON的最佳方法是什么? ;}

我给出了我的variant_list对象 - 我无法更改它,但我的标准对象可以根据需要构建,以使此搜索简单有效。

我已经尝试过并且也有效,但我知道是旧学校且效率低下:-( http://jsfiddle.net/v18h6qta/6/

2 个答案:

答案 0 :(得分:0)

您可以使用underscore js库函数findfindWhere或任何其他套件来查找该字段。

例如

你可以使用类似的东西(我使用的是javascript)

result = _U.findWhere(variant_list,{size:'user value',color:'user value'});
console.log(result.variation_id);

希望这会对你有所帮助。

答案 1 :(得分:0)

我的小提琴中有简单的更新 我已添加此代码

function find(){
    var a=$("input[name=size]:checked").val();
    var b=$("input[name=color]:checked").val();

     for(var i=0;i< variant_list.length; i++){
         if(variant_list[i].attributes.size==a &&variant_list[i].attributes.color==b ){
           alert(variant_list[i].variation_id);   
         }
    }  

}

Click the demo