Javascript 如何在ajax响应中获取特定属性?
这是我从后端得到的ajax响应。我需要从这个响应中搜索属性“select”:true 从后端获取的Ajax响应:Javascript 如何在ajax响应中获取特定属性?,javascript,json,ajax,Javascript,Json,Ajax,这是我从后端得到的ajax响应。我需要从这个响应中搜索属性“select”:true 从后端获取的Ajax响应: [ [ { "itemCategory": "Bedroom", "task": "Bedroom", "children": [ { "task": "Smart TV", "price": 300, "le
[
[
{
"itemCategory": "Bedroom",
"task": "Bedroom",
"children": [
{
"task": "Smart TV",
"price": 300,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
},
{
"task": "Bed",
"price": 500,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
},
{
"itemCategory": "Kitchen",
"task": "Kitchen",
"children": [
{
"task": "Micro oven",
"price": 200,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
},
{
"task": "Refrigerator",
"price": 250,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
},
{
"itemCategory": "Kitchen",
"task": "Kitchen",
"children": [
{
"task": "Dining Table",
"price": 100,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
}
],
[
{
"itemCategory": "Bedroom",
"task": "Bedroom",
"children": [
{
"task": "Smart TV",
"price": 300,
"leaf": true,
"labor": "5",
"rate": 4,
"text": "",
"select": true
},
{
"task": "Bed",
"price": 500,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
},
{
"itemCategory": "Kitchen",
"task": "Kitchen",
"children": [
{
"task": "Micro oven",
"price": 200,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
},
{
"task": "Refrigerator",
"price": 250,
"leaf": true,
"labor": "4",
"rate": 3,
"select": true
}
]
},
{
"itemCategory": "Kitchen",
"task": "Kitchen",
"children": [
{
"task": "Dining Table",
"price": 100,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
}
],
[
{
"itemCategory": "Bedroom",
"task": "Bedroom",
"children": [
{
"task": "Smart TV",
"price": 300,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
},
{
"task": "Bed",
"price": 500,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
},
{
"itemCategory": "Kitchen",
"task": "Kitchen",
"children": [
{
"task": "Micro oven",
"price": 200,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
},
{
"task": "Refrigerator",
"price": 250,
"leaf": true,
"labor": "",
"rate": 0,
"text": ""
}
]
},
{
"itemCategory": "Kitchen",
"task": "Kitchen",
"children": [
{
"task": "Dining Table",
"price": 100,
"leaf": true,
"labor": "5",
"rate": 4,
"text": "",
"select": true
}
]
}
]
]
这是预期输出:
{
"task": "Smart TV",
"price": 300,
"leaf": true,
"labor": "5",
"rate": 4,
"text": "",
"select": true
},
{
"task": "Refrigerator",
"price": 250,
"leaf": true,
"labor": "4",
"rate": 3,
"select": true
},
{
"task": "Dining Table",
"price": 100,
"leaf": true,
"labor": "5",
"rate": 4,
"text": "",
"select": true
}
首先,我比较项目名称。一旦我得到了,我需要搜索“选择:真”
var project=“demo”;
Ext.Ajax.request({
url:“/common/services/general/basiccoperations/getDataByModelUsingGetMethod”,
方法:“GET”,
参数:{
actionId:'估计数据',
dataJson:“{”aspectType:“绘制估计器”}”
},
成功:功能(响应){
试一试{
var response=response.responseText;
var resObj=外部解码(响应);
对于(变量i=0;i
提前感谢。这是一种没有外部库的方法。为了简化嵌套数组上的操作,定义了
flatMap
flatMap->[1,2],[3,4]]到[1,2,3,4]
const data=[{itemcegory:'dombery',task:'dombery',children:[{task:'Smart-TV',price:300,leaf:true,labor:'',labor:'',{itemcegory:'Kitchen',task:'Kitchen',children{任务:'Micro-coven',价格:200,叶:真,人工:'',价格:0,文本:'},{任务:'冰箱',价格:250,叶:真,人工:'',价格:0,文本:'}]},{itemcegory:'Kitchen',任务:'Kitchen',children:[{任务:'餐桌',价格:100,叶:真,人工:''',价格:0,文本:'}]},[{itemCategory:'Beddy',task:'Beddy',children:[{task:'Smart TV',价格:300,叶:真,人工:'5',费率:4,文本:'',选择:真},{task:'Bed',价格:500,叶:真,人工:'',费率:0,文本:''},{itemCategory:'Kitchen',task Kitchen',children{任务:“微型烤箱”,价格:200,叶:真,人工:'',价格:0,文本:'},{任务:“冰箱”,价格:250,叶:真,人工:''4',价格:3,选择:真}]},{itemCategory:'Kitchen',任务:'Kitchen',children:[{任务:“餐桌”,价格:100,叶:真,人工:'},价格:0,文本:'},[{itemCategory:'卧室',task:'卧室',儿童:[{task:'智能电视',价格:300,叶:真,人工:'',费率:0,文本:'},{task:'床',价格:500,叶:真,人工:'',费率:0,文本:'}]},{itemCategory:'厨房',任务:'厨房',儿童:[{task task:'微烤箱',价格:200,叶:真,人工:'''',费率:0,文本:'},{任务:'冰箱',价格:250,叶:真,人工:'',费率:0,文本:'}]},{项目类别:'厨房',任务:'厨房',儿童:[{任务:'餐桌',价格:100,叶:真,人工:'5',费率:4,文本:'',选择:真}]]
功能平面图(arr){
返回arr.reduce((acc,cur)=>{
acc=acc.concat(当前)
返回acc
}, [])
}
const result=flatMap(flatMap(data).map(x=>flatMap(x.children))).filter(x=>x.select==true)
console.log(result)
您可以使用lodash.filter,不使用任何外部库是否可以?@Goutam.A.S是的,您可以使用
var project = "demo";
Ext.Ajax.request({
url: '/common/services/general/basicOperations/getDataByModelUsingGetMethod',
method: 'GET',
params: {
actionId: 'estimatordata',
dataJson: '{"aspectType":"Painting Estimator"}'
},
success: function(response) {
try {
var response = response.responseText;
var resObj = Ext.decode(response);
for (var i = 0; i < resObj.data.length; i++) {
if (resObj.data[i].refDataNameName == project) {
console.log(JSON.stringify(resObj.data[i]['allGridsData'], null, 4));
}
}
this.lookupReference('selectionsinquiryDetailGrid').getStore().loadData(
arr
);
} catch (e) {
console.log(e);
}
},
failure: function(response) {
},
scope: this
});