перебор массива объектов
Всем привет! Подскажите, пожалуйста где делаю не правильно:
Есть массив объектов, у каждого объекта есть свойство status. Хотелось бы передать в функцию параметр "Выполнено" и получить количество всех объектов, в которых status: "Выполнено". Пробую так:
function getStatus(array, search) {
var values = [];
array.forEach(function(values, item) {
if (item.key === search) {
values.push(item.key);
}
});
return values;
};
var projects = [{
comments: "какой-то комментарий из первого объекта",
prioritet: "4",
status: "Выполнено"
}, {
comments: "какой-то комментарий из второго объекта",
prioritet: "1",
status: "В работе"
}, {
comments: "какой-то комментарий из третьего объекта",
prioritet: "2",
status: "Просрочено более 7 дней"
}, {
comments: "какой-то комментарий из четвертого объекта",
prioritet: "3",
status: "Выполнено"
}, {
comments: "какой-то комментарий из пятого объекта",
prioritet: "5",
status: "Просрочено до 7 дней"
}];
console.log(getStatus(projects, "Выполнено"));
|
phoenix200689,
function getStatus(array, search) {
return array.filter(function(item) {
return Object.keys(item).some(function(key) {
return item[key] === search
})
})
};
var projects = [{
comments: "какой-то комментарий из первого объекта",
prioritet: "4",
status: "Выполнено"
}, {
comments: "какой-то комментарий из второго объекта",
prioritet: "1",
status: "В работе"
}, {
comments: "какой-то комментарий из третьего объекта",
prioritet: "2",
status: "Просрочено более 7 дней"
}, {
comments: "какой-то комментарий из четвертого объекта",
prioritet: "3",
status: "Выполнено"
}, {
comments: "какой-то комментарий из пятого объекта",
prioritet: "5",
status: "Просрочено до 7 дней"
}];
console.log(getStatus(projects, "Выполнено"));
|
фильтрация массива по условию
phoenix200689,
или так
function getStatus(array, search) {
return array.filter(function(item) {
return search(item)
})
};
var projects = [{
comments: "какой-то комментарий из первого объекта",
prioritet: "4",
status: "Выполнено"
}, {
comments: "какой-то комментарий из второго объекта",
prioritet: "1",
status: "В работе"
}, {
comments: "какой-то комментарий из третьего объекта",
prioritet: "2",
status: "Просрочено более 7 дней"
}, {
comments: "какой-то комментарий из четвертого объекта",
prioritet: "3",
status: "Выполнено"
}, {
comments: "какой-то комментарий из пятого объекта",
prioritet: "5",
status: "Просрочено до 7 дней"
}];
console.log(getStatus(projects, function(item) {
return item.status === "Выполнено"
}));
|
Спасибо, Рони :)
|
Вариант - на базе оригинала
function getStatus(array, search) {
var values = [];
array.forEach(function(item) {
if (item.status === search) {
values.push(item);
}
});
return values;
};
var projects = [{
comments: "какой-то комментарий из первого объекта",
prioritet: "4",
status: "Выполнено"
}, {
comments: "какой-то комментарий из второго объекта",
prioritet: "1",
status: "В работе"
}, {
comments: "какой-то комментарий из третьего объекта",
prioritet: "2",
status: "Просрочено более 7 дней"
}, {
comments: "какой-то комментарий из четвертого объекта",
prioritet: "3",
status: "Выполнено"
}, {
comments: "какой-то комментарий из пятого объекта",
prioritet: "5",
status: "Просрочено до 7 дней"
}];
console.log(getStatus(projects, "Выполнено"));
|
спасибо:victory:
|
| Часовой пояс GMT +3, время: 12:26. |