Я вижу здесь две проблемы:
1) Вы неправильно передаете данные во внешний интерфейс javascript. <%=
всегда неверно, потому что он кодирует HTML сущностей, но мы находимся в теге сценария JS, а не в обычном HTML. Вместо этого вы хотите передать его как JSON, используя JSON.stringify
, и использовать <%-
, чтобы предотвратить HTML -кодирование:
var specimenDate = <%- JSON.stringify(data.areaCode) %>
Тем не менее, здесь по-прежнему есть две проблемы: Во-первых, JSON.stringify(undefined)
создаст undefined
(а не строку), которая станет пустым выводом после <%-
, поэтому вы получите синтаксическую ошибку в случае, если значение не было определено. Во-вторых, строка, содержащая </script>
, выйдет из блока сценария и нанесет ущерб c. Я бы рекомендовал использовать что-то вроде devalue
вместо JSON.stringify
.
2) Вы получаете доступ к data.areaCode
, но я вижу, что data
на самом деле происходит от filtered
, а filtered
является результатом вызова Array.prototype.filter
, который возвращает массив всех совпадающих элементов. Тем не менее, вы обращаетесь к свойству areaCode
, как если бы data
был непосредственно одним из совпадающих элементов, а не массивом всех совпадающих элементов.
Если предполагается, что у вас есть массив, у вас есть на l oop над его записями или получить доступ к нему напрямую, например data[0].areaCode
(но также вы должны убедиться, что data[0]
всегда существует).
Если это не предназначено, вы просто использовал неправильный метод массива. Вы можете использовать Array.prototype.find
для возврата первого совпадения или undefined
в противном случае.
Пример:
const db = [
{ areaCode: 1, text: 'A' },
{ areaCode: 2, text: 'B' },
{ areaCode: 2, text: 'C' }
]
console.log(db.filter(el => el.areaCode === 1)) // [{ areaCode: 1, text: 'A' }]
console.log(db.filter(el => el.areaCode === 2)) // [{ areaCode: 2, text: 'B' },
// { areaCode: 2, text: 'C' }]
console.log(db.filter(el => el.areaCode === 3)) // []
console.log(db.find(el => el.areaCode === 1)) // { areaCode: 1, text: 'A' }
console.log(db.find(el => el.areaCode === 2)) // { areaCode: 2, text: 'B' }
console.log(db.find(el => el.areaCode === 3)) // undefined