Просто добавьте includes
:
myArr.filter(item => item.performed ===1 && condition_id.includes(item.id));
Вот то, как Вы могли бы реализовать setAttribute
отражение использования (я переименовал функцию; существуют различные отражательные функции для различных типов поля):
public void setIntField(String fieldName, int value)
throws NoSuchFieldException, IllegalAccessException {
Field field = getClass().getDeclaredField(fieldName);
field.setInt(this, value);
}
Кроме того, смотрите на BeanUtils, который может скрыть часть сложности использования отражения от Вас.
В целом Вы хотите использовать Отражение. Вот хорошее введение в тема с примерами
, В частности, раздел "Changing Values of Fields" описывает, как сделать то, что требуется сделать.
я отмечаю, что автор говорит, "Эта функция чрезвычайно мощна и не имеет никакого эквивалента на других стандартных языках". Конечно, за прошлые десять лет (статья была написана в 1998) мы видели большие успехи, достигнутые на динамических языках. Вышеупомянутое довольно легко сделано в Perl, Python, PHP, Ruby, и так далее. Я подозреваю, что это - направление, из которого Вы, возможно, произошли на основе тега "оценки".
В зависимости от использования можно использовать отражение, как рекомендуется выше, или возможно HashMap лучше подошел бы...
Вы могли бы хотеть кэшировать некоторые отражательные данные, в то время как Вы в нем:
import java.lang.reflect.Field;
import java.util.HashMap;
class Foo {
private HashMap<String, Field> fields = new HashMap<String, Field>();
private void setAttribute(Field field, Object value) {
field.set(this, value);
}
public void setAttribute(String fieldName, Object value) {
if (!fields.containsKey(fieldName)) {
fields.put(fieldName, value);
}
setAttribute(fields.get(fieldName), value);
}
}