我对编码很陌生,并且遇到了以下问题。
我的JSON数据如下所示:
var data = [
{
"location_name": "Training Club",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1094"
},
{
"location_name": "Boxing Center",
"Area Code": "C",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "Boxing Center 2",
"Area Code": "F",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "DanceDance",
"Area Code": "A",
"location_type": "Dance",
"postcode": "1093JX"
},
{
"location_name": "CrossFit Box",
"Area Code": "A",
"location_type": "CrossFit",
"postcode": "1019AJ"
},
{
"location_name": "Gym A",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1098NJ"
}, ]//and so on.....

我通过webhook从表单中获取输入并获得以下结果:
区号=" C" sport_type ="健身"
所以现在我想用区号' C'来搜索/过滤所有选项的数据。和健身。
这段代码只会给我列表的第一个结果:
search = JSON.search(inputData.area_code === 'C');
console.log(search);
var C = JSON.search(data[0]);
for (var i=0; i < data.length; i++) {
console.log(data[i]);
};
output = {search};
&#13;
有人有想法解决这个问题吗? 干杯, 尼科尔
答案 0 :(得分:1)
使用过滤功能并将您的条件指定为&amp;&amp;操作数
data.filter(function(el){
return (el["Area Code"] == "C" && el.location_type == "Fitness");
});
var data = [
{
"location_name": "Training Club",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1094"
},
{
"location_name": "Boxing Center",
"Area Code": "C",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "Boxing Center 2",
"Area Code": "F",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "DanceDance",
"Area Code": "A",
"location_type": "Dance",
"postcode": "1093JX"
},
{
"location_name": "CrossFit Box",
"Area Code": "A",
"location_type": "CrossFit",
"postcode": "1019AJ"
},
{
"location_name": "Gym A",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1098NJ"
}]
var s = data.filter(function(el){
return (el["Area Code"] == "C" && el.location_type == "Fitness");
});
console.log(s);
答案 1 :(得分:0)
正如其他答案所提到的,您可以使用过滤器来删除结果。我会建议你使用三等于最佳实践:
var result = data.filter(function(item) {
return item["Area Code"] === "C" && item["location_type"] === "Fitness";
});
更现代的语法是:
let result = data.filter(item => item["Area Code"] === "C" && item["location_type"] === "Fitness");
你也可以使用循环来做,即使性能略好一些,它也不是那么可读:
var data = [ ... ];
var result = [];
for (var i = 0; i < data.length; i++) {
if (data[i]["Area Code"] === "C" && data[i]["location_type"] === "Fitness") {
result.push(data[i]);
}
};
答案 2 :(得分:0)
<强> 1。使用ES6
方法使用var data = [
{
"location_name": "Training Club",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1094"
},
{
"location_name": "Boxing Center",
"Area Code": "C",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "Boxing Center 2",
"Area Code": "F",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "DanceDance",
"Area Code": "A",
"location_type": "Dance",
"postcode": "1093JX"
},
{
"location_name": "CrossFit Box",
"Area Code": "A",
"location_type": "CrossFit",
"postcode": "1019AJ"
},
{
"location_name": "Gym A",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1098NJ"
}];
var res = data.filter(item => { return item["Area Code"] == "C" && item["location_type"] == "Fitness" });
console.log(res);
箭头功能。
var data = [
{
"location_name": "Training Club",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1094"
},
{
"location_name": "Boxing Center",
"Area Code": "C",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "Boxing Center 2",
"Area Code": "F",
"location_type": "Martial Arts",
"postcode": "1096AN"
},
{
"location_name": "DanceDance",
"Area Code": "A",
"location_type": "Dance",
"postcode": "1093JX"
},
{
"location_name": "CrossFit Box",
"Area Code": "A",
"location_type": "CrossFit",
"postcode": "1019AJ"
},
{
"location_name": "Gym A",
"Area Code": "C",
"location_type": "Fitness",
"postcode": "1098NJ"
}];
var result = [];
for (var i in data) {
if(data[i]["Area Code"] == "C" && data[i]["location_type"] == "Fitness") {
result.push(data[i]);
}
};
console.log(result);
<强> 2。使用JavaScript Array.filter循环:
{{1}}