Javascript Node.js中ES6过滤器的奇怪行为
我正在尝试使用ES6:filter筛选下面的数据Javascript Node.js中ES6过滤器的奇怪行为,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我正在尝试使用ES6:filter筛选下面的数据 { "EmailAddress": "joe@example.com", "Name": "", "Date": "2009-01-23 06:22:00", "State": "Active", "CustomFields": [ { "Key": "[FirstName1]",
{
"EmailAddress": "joe@example.com",
"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):
我不明白通过过滤器提取数据如何改变数据源。我忽略了一些基本的东西吗?你应该用
==
代替赋值(=
)
let订户={“电子邮件地址”:joe@example.com“,”名称“:”,”日期“:”2009-01-23 06:22:00”,“状态“:”活动“,”自定义字段“:[{”键“:”[FirstName1],”值“:“joe”},{”键“:“[LastName1],”值“:“bloggs”}]}”
const firstName=subscriber.CustomFields.filter(cf=>cf.Key=='[FirstName1]');
console.log(名字)
应该是cf.Key==='FirstName1'
而不是cf.Key='FirstName1'
您所说的“源代码已更改”是什么意思?当然它没有更改源代码文件,是吗?是的@Bergi-赋值(single=,而不是double=)将更改数据。谢谢。真不敢相信我没看到!
{
"EmailAddress": "joe@example.com",
"Name": "",
"Date": "2009-01-23 06:22:00",
"State": "Active",
"CustomFields": [
{
"Key": "[FirstName1]",
"Value": "joe"
},
{
"Key": "[FirstName1]",
"Value": "bloggs"
}
]
}
const firstName = subscriber.CustomFields.filter(cf => cf.Key == 'FirstName1')