在代码中动态处理字符串和数组

问题描述 投票:0回答:2

堆栈id的数据类型可以是数组或字符串。

在下面的代码stack[0].idArraystack[1].id是字符串。

问题是当id作为数组返回时,stackConfig是未定义的。

我该如何动态处理?

let stack = [{id:['stack1','stack2']},{id:'stack2'}]
let stackConfig = this.stackConfigs.find(c => c.id === selectionId);
javascript angular typescript
2个回答
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);

0
投票

你应该做的第一件事是检查c.id === selectionId在任何时候是否都是真的。这可能永远不会成立,因此未定义的原因。

您可以尝试处理selectionId也未定义如下:

if (c.id.indexOf(selectionId) != -1) return true;
© www.soinside.com 2019 - 2024. All rights reserved.