[英]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;
})
但是結果是:
您可以使用reduce
, map
和concat
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.