在JSON中搜索键值对集



我有一个JSON对象中所有可能的唯一产品变体组合的列表[这就是wooccommerce构建它的方式]。举个例子,我有一个产品有两种尺寸-尺寸1和尺寸2和颜色-颜色1和颜色2:

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传递到后端。用属性条件集={"size":"size2","color":"color1"}搜索JSON的最佳方式是什么。

给出了我的variant_list对象-我不能更改它,但可以根据需要构建我的criteria对象,使搜索变得简单高效。

我也尝试过,但我知道这是老派和低效的:-(http://jsfiddle.net/v18h6qta/6/

您可以使用下划线js库函数find、findWhere或任何其他适合您查找字段的函数。

例如

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

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

希望这对你有帮助。

我在你的小提琴里有简单的更新我已经添加了这个代码

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);   
         }
    }  
}

点击演示

最新更新