在 javascript 中迭代数组
Iterate array in javascript
我的控制器中有一个创建搜索过滤器的功能。
搜索参数是从我的树枝模板的 select 字段中获得的。
selected 选项被传递给控制器以查看具有该值的结果。
查询结果return格式为JSON。
public function categoryAction(Request $request){
$em = $this->getDoctrine()->getManager();
$category = $request->request->get('category');
$contentCategory = $em->getRepository('PublicartelAppBundle:Content')->findByCategory($category);
$filterContent = new JsonResponse();
$filterContent->setData([
'category_result' => $contentCategory
]);
return $filterContent;
}
$('#selectCategory').on('change', function () {
var optionSelect = $(this).val();
$.post("{{path('playlist_category') }}", {category: optionSelect},
function (filterContent) {
var result = filterContent.category_result;
console.log(result);
}, 'json');
});
控制台中的这个return:
[Object, Object, Object]
O: Object
1: Object
2: Object
lenght: 3
return编辑的项目数量取决于找到的属于该类别的项目数量。
如果我执行以下操作可以迭代每个元素。
for (var content in filterContent.category_result){
console.log(content, filterContent.category_result[content]);
}
并且 return 在控制台中是这样的:
0 Object {}
1 Object {}
2 Object {}
但我想访问每个对象的 'name' 属性。
我怎么能说要访问对象名称 属性 ,或者至少每个都一一迭代?
您可以记录 filterContent.category_result[content].name
如果合适 属性。
试试这个看看 "name" 在哪里:
for (var content in filterContent.category_result) {
console.log(content);
for (var i in filterContent.category_result[content]) {
console.log(filterContent.category_result[content][i]);
}
}
问题是 findBy
存储库方法 return 一个 Doctrine ArrayCollection
填充了实体值。要将其翻译为有效的 JSON,您可以迭代它并将其翻译成一个简单的数组,如下所示在控制器中 class:
$contentCategory = ....
$contents = array();
foreach($contentCategory as $elem)
$contents[] = array(
'name' => $elem->getName();
....
);
$filterContent = new JsonResponse();
$filterContent->setData([
'category_result' => $result
]);
return $filterContent;
您还可以考虑使用序列化程序作为 http://jmsyst.com/libs/serializer
希望对您有所帮助
我的控制器中有一个创建搜索过滤器的功能。
搜索参数是从我的树枝模板的 select 字段中获得的。
selected 选项被传递给控制器以查看具有该值的结果。
查询结果return格式为JSON。
public function categoryAction(Request $request){
$em = $this->getDoctrine()->getManager();
$category = $request->request->get('category');
$contentCategory = $em->getRepository('PublicartelAppBundle:Content')->findByCategory($category);
$filterContent = new JsonResponse();
$filterContent->setData([
'category_result' => $contentCategory
]);
return $filterContent;
}
$('#selectCategory').on('change', function () {
var optionSelect = $(this).val();
$.post("{{path('playlist_category') }}", {category: optionSelect},
function (filterContent) {
var result = filterContent.category_result;
console.log(result);
}, 'json');
});
控制台中的这个return:
[Object, Object, Object]
O: Object
1: Object
2: Object
lenght: 3
return编辑的项目数量取决于找到的属于该类别的项目数量。
如果我执行以下操作可以迭代每个元素。
for (var content in filterContent.category_result){
console.log(content, filterContent.category_result[content]);
}
并且 return 在控制台中是这样的:
0 Object {}
1 Object {}
2 Object {}
但我想访问每个对象的 'name' 属性。
我怎么能说要访问对象名称 属性 ,或者至少每个都一一迭代?
您可以记录 filterContent.category_result[content].name
如果合适 属性。
试试这个看看 "name" 在哪里:
for (var content in filterContent.category_result) {
console.log(content);
for (var i in filterContent.category_result[content]) {
console.log(filterContent.category_result[content][i]);
}
}
问题是 findBy
存储库方法 return 一个 Doctrine ArrayCollection
填充了实体值。要将其翻译为有效的 JSON,您可以迭代它并将其翻译成一个简单的数组,如下所示在控制器中 class:
$contentCategory = ....
$contents = array();
foreach($contentCategory as $elem)
$contents[] = array(
'name' => $elem->getName();
....
);
$filterContent = new JsonResponse();
$filterContent->setData([
'category_result' => $result
]);
return $filterContent;
您还可以考虑使用序列化程序作为 http://jmsyst.com/libs/serializer
希望对您有所帮助