首页 > 解决方案 > 无法读取长度 - 接口内的字符串数组

问题描述

我在一个接口内放置一个字符串数组时遇到读取问题。

基本上,我在一个多行的接口中接收一个字符串数组,例如:

{
  "origem": "SERVIDOR",
  "codigoGrupo": "UC",
  "descricaoGrupo": "UC",
  "chave": [
    "UC",
    "AUTOLEITURA",
    "AUTOLEITURA_NAO_UTILIZADA_PROBLEMA_COM_DATA"
  ],
  "valor": "Autoleitura gravada mas não utilizada para faturamento devido a problemas de data."
},
{
  "origem": "SERVIDOR",
  "codigoGrupo": "UC",
  "descricaoGrupo": "UC",
  "chave": [
    "UC",
    "SERVICO",
    "PEDIDO_LIGACAO",
    "CALCULO_CARGA_CORRIGIDA",
    "LISTA_APARELHO_NAO_INFORMADA"
  ],
  "valor": "Lista de aparelhos não informada para o Cálculo da Carga Corrigida."
}

我需要按他的长度过滤“chave”中的值。

已经尝试使用 for、forEach 等循环进行过滤。

let arrayFiltrada: Array<string> = new Array<string>();
for (let i = 0; i < listaGrupo.length; i++) {
  if (listaGrupo[i].chave.length === 3) {
    listaGrupo.forEach(x => {
      if (!arrayFiltrada.includes(x.chave[1])) {
        arrayFiltrada.push(x.chave[1]);
      }
    });
  } else if (listaGrupo[i].chave.length === 4) {
    listaGrupo.forEach(x => {
      if (!arrayFiltrada.includes(x.chave[2])) {
        arrayFiltrada.push(x.chave[2]);
      }
    });
  } else if (listaGrupo[i].chave.length === 5) {
    listaGrupo.forEach(x => {
      if (!arrayFiltrada.includes(x.chave[3])) {
        arrayFiltrada.push(x.chave[3]);
      }
    });
  }
}

使用上面的两个示例,我期望的输出是这样的:

你能给这个问题一些提示吗?

标签: node.jsangulartypescript

解决方案


let arrayFiltrada: string[] = listaGrupo.map(x=> x.chave[x.chave.length-2])

如果我正确理解您的问题,应该会有所帮助。

这将为您提供一个字符串 Array/List,其中包含chave来自listaGrupo.

要仅获取唯一字符串,您可以使用以下方法之一。

arrayFiltrada = [...Set(arrayFiltrada)]

将从数组创建一个集合。集合没有重复的条目。然后 Set 的内容被“传播”回一个数组。

arrayFiltrada = arrayFiltrada.filter((value,index) => arrayFiltrada.indexOf(value)===i)

将过滤掉值,这些值也可以在数组中的较早点找到。

来自:从数组中删除重复项


推荐阅读