无法读取javascript中数组元素的属性
我对javascript相当陌生,我试图找到由无法读取javascript中数组元素的属性,javascript,arrays,node-red,Javascript,Arrays,Node Red,我对javascript相当陌生,我试图找到由configID属性创建的数组的对象。为此,我使用了方法find() JS代码: var configurationArray = flow.get("configurationArray") || []; var configurationId = msg.topic.split("/")[1]; var configuration = { configID: this.configurationID, configurationModul
configID
属性创建的数组的对象。为此,我使用了方法find()
JS代码:
var configurationArray = flow.get("configurationArray") || [];
var configurationId = msg.topic.split("/")[1];
var configuration = {
configID: this.configurationID,
configurationModules: this.MSGesture.payload
};
if(!configurationArray.find(x => x.configID == this, configurationId)){
configurationArray.push(this.configuration);
} else {
//to do
}
Cannot read property 'configId' of undefined
我使用的是节点红色,它为我提供流
和消息
我得到的错误:
var configurationArray = flow.get("configurationArray") || [];
var configurationId = msg.topic.split("/")[1];
var configuration = {
configID: this.configurationID,
configurationModules: this.MSGesture.payload
};
if(!configurationArray.find(x => x.configID == this, configurationId)){
configurationArray.push(this.configuration);
} else {
//to do
}
Cannot read property 'configId' of undefined
非常感谢您提供的任何帮助您可以对属性进行分解并添加默认对象 然后选择
some
而不是find
,因为您只需要检查
最后,省略此,直接获取值
if (!configurationArray.some(({ configID } = {}) => configID === configurationId)) {
configurationArray.push(this.configuration);
} else {
//to do
}
如果您希望有一个抽象回调,可以对configurationId
进行闭包,如
const hasId = id => ({ configID } = {}) => configID === id;
if (!configurationArray.some(hasId(configurationId)) {
configurationArray.push(this.configuration);
} else {
//to do
}
错误明确说明
x
的值未定义,只需将其更改为x&&x.configId
并检查变量是否已定义,其长度if(configurationArray&&!!configurationArray.length&&configurationArray.find(…)
@codemanic您的答案也有效,谢谢。这很有效。谢谢你能解释一下({configID}={})
的作用吗?我不完全理解它在=>
前面做了什么。它是一个带a的。它接受一个对象,或者如果值是未定义的
,则默认对象并从对象中拉出configID