堆栈id的数据类型可以是数组或字符串。
在下面的代码中,stack[0].id
是Array
,stack[1].id
是字符串。
问题是当id作为数组返回时,stackConfig是未定义的。
我如何动态处理?
let stack = [{id:['stack1','stack2']},{id:'stack2'}]
let stackConfig = this.stackConfigs.find(c => c.id === selectionId);
答案 0 :(得分:2)
您可以尝试这样的事情:
let stack = [{id:['stack1','stack3']},{id:'stack2'},{id:'stack4'}]
let selectionId = 'stack2';
let stackConfig = stack.find(c => {
if(Array.isArray(c.id)) { if (c.id.indexOf(selectionId) != -1) return true;}
else { return c.id === selectionId }
return false;
});
console.log(stackConfig);

答案 1 :(得分:0)
您应该做的第一件事是检查c.id === selectionId
是否在任何时候都是真的。这可能永远不会成立,因此未定义的原因。
您可以尝试处理selectionId
也未定义如下:
if (c.id.indexOf(selectionId) != -1) return true;