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

时间:2018-03-05 08:05:21

标签: javascript angular typescript

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

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

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

我如何动态处理?

let stack = [{id:['stack1','stack2']},{id:'stack2'}]
let stackConfig = this.stackConfigs.find(c => c.id === selectionId);

2 个答案:

答案 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;