我有一个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);
}
}
}
点击演示