перебор массива объектов
Всем привет! Подскажите, пожалуйста где делаю не правильно:
Есть массив объектов, у каждого объекта есть свойство 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, время: 17:42. |