26.07.2017, 11:53
|
Аспирант
|
|
Регистрация: 02.11.2016
Сообщений: 31
|
|
перебор массива объектов
Всем привет! Подскажите, пожалуйста где делаю не правильно:
Есть массив объектов, у каждого объекта есть свойство 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, "Выполнено"));
|
|
26.07.2017, 12:43
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,131
|
|
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, "Выполнено"));
|
|
26.07.2017, 12:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,131
|
|
фильтрация массива по условию
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 === "Выполнено"
}));
|
|
26.07.2017, 16:25
|
Аспирант
|
|
Регистрация: 02.11.2016
Сообщений: 31
|
|
Спасибо, Рони
|
|
26.07.2017, 16:58
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Вариант - на базе оригинала
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, "Выполнено"));
|
|
27.07.2017, 09:42
|
Аспирант
|
|
Регистрация: 02.11.2016
Сообщений: 31
|
|
спасибо
|
|
|
|