Странное поведение с фильтром ES6 в Node.js

1

Я пытаюсь отфильтровать данные, используя фильтр ES6:.

{
        "EmailAddress": "[email protected]",
        "Name": "",
        "Date": "2009-01-23 06:22:00",
        "State": "Active",
        "CustomFields": [
            {
                "Key": "[FirstName1]",
                "Value": "joe"
            },
            {
                "Key": "[LastName1]",
                "Value": "bloggs"
            }
        ]
}

Чтобы получить первое имя, я попробовал следующий код:

const firstName = subscriber.CustomFields.filter(cf => cf.Key='FirstName1')

Но после этой строки кода источник изменяется на (см. LastName1 изменен на FirstName1):

{
        "EmailAddress": "[email protected]",
        "Name": "",
        "Date": "2009-01-23 06:22:00",
        "State": "Active",
        "CustomFields": [
            {
                "Key": "[FirstName1]",
                "Value": "joe"
            },
            {
                "Key": "[FirstName1]",
                "Value": "bloggs"
            }
        ]
}

Я не понимаю, как извлечение данных через фильтр может изменить источник. Я не замечаю здесь что-то принципиальное?

  • 1
    Это должно быть cf.Key === 'FirstName1' не cf.Key='FirstName1'
  • 0
    Что вы подразумеваете под "источник изменился"? Конечно, это не изменило файл исходного кода, не так ли?
Показать ещё 1 комментарий
Теги:
ecmascript-6

1 ответ

1
Лучший ответ

Вы должны использовать == вместо назначения (=).

const firstName = subscriber.CustomFields.filter(cf => cf.Key == 'FirstName1')

let subscriber = { "EmailAddress": "[email protected]", "Name": "", "Date": "2009-01-23 06:22:00", "State": "Active", "CustomFields": [ { "Key": "[FirstName1]", "Value": "joe" }, { "Key": "[LastName1]", "Value": "bloggs" } ] }

const firstName = subscriber.CustomFields.filter(cf => cf.Key == '[FirstName1]');
console.log(firstName);
  • 0
    Благодарю. Не могу поверить, что я этого не видел!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню