【发布时间】:2015-05-22 20:12:18
【问题描述】:
我想用 JavaScript 过滤一个对象数组。
array(
(int) 0 => array(
'DetailedWorkingHour' => array(
'id' => '326',
'start' => '07:00:00',
'end' => '16:00:00',
'date' => '2015-06-17',
'working_hour_template_id' => '3'
),
'WorkingHourTemplate' => array(
'color' => 'red',
'id' => '3'
)
),
(int) 1 => array(
'DetailedWorkingHour' => array(
'id' => '346',
'start' => '07:00:00',
'end' => '16:00:00',
'date' => '2015-07-01',
'working_hour_template_id' => '3'
),
'WorkingHourTemplate' => array(
'color' => 'red',
'id' => '3'
)
)
)
这个过滤函数只返回DetailedWorkingHour 对象,但我需要将两者都作为返回数组
var filteredResult = filterByProperty(hours, "date", formattedDate);
function filterByProperty(array, prop, value){
var filtered = [];
for(var i = 0; i < array.length; i++){
var obj = array[i];
for(var key in obj){
if(typeof(obj[key] == "object")){
var item = obj[key];
if(item[prop] == value){
filtered.push(item);
}
}
}
}
return filtered;
}
如何在返回的数组中同时拥有两个对象?
【问题讨论】:
-
你的数组是什么语言的?
-
将
obj推入filtered而不是item。 -
数组是正确的 JSON 格式。上面的输出是 CakePHP 的调试输出。
-
如果您发布 JSON 而不是 PHP 会更有帮助,因此我们可以将其粘贴到 Javascript 窗口中。
-
什么是
hours?formattedDate是什么? “我需要将两者都作为返回数组”中的“两者”是什么?为什么要包含 CakePHP 的调试输出而不是 JS 代码?
标签: javascript arrays object filter