Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法读取javascript中数组元素的属性_Javascript_Arrays_Node Red - Fatal编程技术网

无法读取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

我对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
}
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