У меня есть этот пример JSON, содержащий 2 элемента:
[
{
"Fecha":"2018-05-08T00:00:00",
"Proyectado":0,
"Requerido":0,
"Faltante":0,
"stock_resultado":0,
"IdProducto":"88C9B788-2009-47B3-5690-532E2CF84E56",
"Consecutivo":184
},
{
"__KEY__":"4a558959-bb63-68a2-2e87-358d678c6ec8",
"Fecha":"2018/06/16 00:00:00",
"Proyectado":2,
"CantidadProyeccion":"8",
"IdProducto":"7723EE8E-824C-7D19-1205-4B175D4A5DCB"
}
]
Из приведенного выше JSON мне нужно отфильтровать те элементы, чьи IdProducto
файлы 88C9B788-2009-47B3-5690-532E2CF84E56
.
Я пытался использовать filter
функцию " ", но она всегда возвращает одно и то же количество данных "в этом случае в объекте есть (2) элемента " .
Пример того, что я пытаюсь сделать 1 :
var arreglo_muestra = [{
"Fecha": "2018-05-08T00:00:00",
"Proyectado": 0,
"Requerido": 0,
"Faltante": 0,
"stock_resultado": 0,
"IdProducto": "88C9B788-2009-47B3-5690-532E2CF84E56",
"Consecutivo": 184
}, {
"__KEY__": "4a558959-bb63-68a2-2e87-358d678c6ec8",
"Fecha": "2018/06/16 00:00:00",
"Proyectado": 2,
"CantidadProyeccion": "8",
"IdProducto": "7723EE8E-824C-7D19-1205-4B175D4A5DCB"
}];
function obtenerProductoPorId(IdProducto) {
return IdProducto = "88C9B788-2009-47B3-5690-532E2CF84E56";
}
function myFunction() {
document.getElementById("demo").innerHTML = JSON.stringify(arreglo_muestra.filter(obtenerProductoPorId));
}
<p>Presione el botón para obtener el objeto filtrado por IdProducto:</p>
<button onclick="myFunction()">Filtrar producto por ID</button>
<p id="demo"></p>
Я действительно не знаю, почему это не работает, как я полагаю, должно.
Как я могу отфильтровать этот образец объекта, используя .filter()
или другие функции javascript?
1 Код адаптирован с этой страницы .
Как сказано в документации , вы должны получить элемент и внутри него условие, которое должно быть выполнено, учтите, что он вернет еще один массив объектов, он может быть с нулем элементов или с несколькими
Маурисио, я предлагаю эту функцию:
Он получит в параметре массив, ключ и значение, которое вы хотите отфильтровать, и вернет результат.
Я думаю, что таким образом код мог бы быть более переносимым.
Я применил практику, которая кажется мне рекомендуемой: освободить DOM-элементы от любой функции, передав ее слушателю по ее id, таким образом, DOM-элементы более независимы.
Используя функцию стрелки, решение немного короче, в этом решении мы применяем функцию
filter
к переменнойarray
, передавая в качестве параметра каждый объект, представленный какe
тогда, функция будетfilter
проходить каждый объект в массиве, фильтруяIdProducto
каждый пройденный элемент и возвращая результат относительно состояния.здесь документация