簡體   English   中英

Javascript中兩個數組的連接

[英]join of two array in Javascript

我需要連接兩個數組,從服務器獲取下一個json。 一個表示“數據”的數組,該數組具有2個對象,另一個數組稱為“ Doc”,該數組由4個對象組成。

我想創建一個包含8個等於以下元素的矩陣(我手工完成):

[
    {
        "idlibrosiva": 1,
        "iddoc": 1,
        "false": 1
    },{
        "idlibrosiva": 1,
        "iddoc": 2,
        "false": 1
    },{
        "idlibrosiva": 1,
        "iddoc": 3,
        "false": 1
    },{
        "idlibrosiva": 1,
        "iddoc": 4,
        "false": 1
    },{
        "idlibrosiva": 2,
        "iddoc": 1,
        "false": 1
    },{
        "idlibrosiva": 2,
        "iddoc": 2,
        "false": 1
    },{
        "idlibrosiva": 2,
        "iddoc": 3,
        "false": 1
    },{
        "idlibrosiva": 1,
        "iddoc": 4,
        "false": 1
    }]

這是我從json服務器獲得的

    {
"status": "success",
"code": 200,
"data": [
    {
        "idlibrosiva": 1,
        "nombre": "Compras",
        "descripcion": "Art.-141 C.T.",
        "estado": 1
    },
    {
        "idlibrosiva": 2,
        "nombre": "Contribuyentes",
        "descripcion": "Artículo 141. C.T.- ",
        "estado": 1
    },

],
"Doc": [
    {
        "**iddoc**": 1,
        "documento": "CREDITO FISCAL",
        "descripcion": "ART. 107 C.C.",
        "estado": 1
    },
    {
        "iddoc": 2,
        "documento": "NOTA DE CREDITO",
        "descripcion": "ART. 110 C.C- ",
        "estado": 1
    },
    {
        "iddoc": 3,
        "documento": "FACTURA",
        "descripcion": "ART. 107 C.C.",
        "estado": 1
    },
    {
        "iddoc": 4,
        "documento": "NOTA DE DEBITO",
        "descripcion": "ART. 110 C.C.-",
        "estado": 1
    },
       ],
"mensaje": "Todo se ha cargado correctamente"}

我試圖這樣做:

this.Info = response.data;
                this.liva = response.data.filter((item) => item.estado == 1);
                this.docs = response.Doc.filter((item) => item.estado == 1);
                this.DocYlib = this.liva.map((item)=>{
                    const DocumentoUtilizado = new ModeloDocUtilizadosIVA();
                    DocumentoUtilizado.Libro = item.idlibrosiva;
                    DocumentoUtilizado.estado = false;
                    DocumentoUtilizado.documento = this.docs.map((item) => item.iddoc);
                    return DocumentoUtilizado;
                })

但是結果是:

在此處輸入圖片說明

您可以使用reducemapconcat

var output = obj.Doc.reduce( (acc, c) => 
     acc.concat( obj.data.map( s => 
      ({ idlibrosiva : s.idlibrosiva, iddoc : c.iddoc, "false": 1 })  //return new object from map callback
     ) //concat statement ended
) , []) //initialize accumulator to []

演示

 var obj = { "status": "success", "code": 200, "data": [{ "idlibrosiva": 1, "nombre": "Compras", "descripcion": "Art.-141 CT", "estado": 1 }, { "idlibrosiva": 2, "nombre": "Contribuyentes", "descripcion": "Artículo 141. CT- ", "estado": 1 }, ], "Doc": [{ "iddoc": 1, "documento": "CREDITO FISCAL", "descripcion": "ART. 107 CC", "estado": 1 }, { "iddoc": 2, "documento": "NOTA DE CREDITO", "descripcion": "ART. 110 CC- ", "estado": 1 }, { "iddoc": 3, "documento": "FACTURA", "descripcion": "ART. 107 CC", "estado": 1 }, { "iddoc": 4, "documento": "NOTA DE DEBITO", "descripcion": "ART. 110 CC-", "estado": 1 }, ], "mensaje": "Todo se ha cargado correctamente" }; var output = obj.Doc.reduce((acc, c) => acc.concat(obj.data.map(s => ({ idlibrosiva: s.idlibrosiva, iddoc: c.iddoc, "false": 1 }) //return new object from map callback ) //concat statement ended ), []) //initialize accumulator to [] console.log(output); 

要求是將“數據”中的每個對象映射到“文檔”中的每個對象。

讓我們分別提取它們。

const { data, Doc:doc } = response;
// aliasing Doc as doc, just for variable declaration convention.

現在,使用forEach進行遍歷,並將所需對象推入結果數組。

const result = [];
data.forEach(dataObj => {
  const { idlibrosiva } = data;
  doc.forEach(docObj => {
    const { iddoc } = doc;
    result.push({
      idlibrosiva,
      iddoc,
      'false': 1
    };
  };
};

console.log('result --> ', result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM