无法读取 javascript 中数组元素的 属性

Can not read property of array element in javascript

我是 javascript 的新手,我正在尝试查找由 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
}

我正在使用 node-red,它给了我 flowmsg

我得到的错误:

Cannot read property 'configId' of undefined

感谢任何帮助

您可以解构 属性 并添加默认对象。

然后取 some 而不是 find,因为您只需要支票。

最后省略this直接取值

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
}