如何在javascript的新数组中使用相同appName从两个不同的数组生成push元素

如何在javascript的新数组中使用相同appName从两个不同的数组生成push元素,javascript,arrays,conditional-statements,Javascript,Arrays,Conditional Statements,这是两个包含一些数据的数组 var z = [ { appId: "1", appName: "CapLogix", envId: "970", envName: "UAT4" }, { appId: "1", appName: "CapLogix", envId: "970", envName: "UAT4" }, { appId: "1", appName: "CapLogix", e

这是两个包含一些数据的数组

var z = [
  {
    appId: "1",
    appName: "CapLogix",
    envId: "970",
    envName: "UAT4"
  },
  {
    appId: "1",
    appName: "CapLogix",
    envId: "970",
    envName: "UAT4"
  },
  {
    appId: "1",
    appName: "CapLogix",
    envId: "970",
    envName: "UAT4"
  },
  {
    appId: "21",
    appName: "NOCC",
    envId: "967",
    envName: "UAT4"
  },
  {
    appId: "21",
    appName: "NOCC",
    envId: "967",
    envName: "UAT4"
  },
  {
    appId: "21",
    appName: "NOCC",
    envId: "967",
    envName: "UAT4"
  },
  {
    appId: "71",
    appName: "NETLOGIX",
    envId: "972",
    envName: "UAT4"
  },
  {
    appId: "71",
    appName: "NETLOGIX",
    envId: "972",
    envName: "UAT4"
  },
  {
    appId: "71",
    appName: "NETLOGIX",
    envId: "972",
    envName: "UAT4"
  },
  {
    appId: "73",
    appName: "ConfigBuilder",
    envId: "971",
    envName: "UAT4"
  },
  {
    appId: "73",
    appName: "ConfigBuilder",
    envId: "971",
    envName: "UAT4"
  }
];

var y = [
  {
    appId: "1",
    appName: "CapLogix",
    envId: "959",
    envName: "SIT-4"
  },
  {
    appId: "1",
    appName: "CapLogix",
    envId: "959",
    envName: "SIT-4"
  },
  {
    appId: "21",
    appName: "NOCC",
    envId: "965",
    envName: "SIT-4"
  },
  {
    appId: "21",
    appName: "NOCC",
    envId: "965",
    envName: "SIT-4"
  },
  {
    appId: "71",
    appName: "NETLOGIX",
    envId: "958",
    envName: "SIT-4"
  },
  {
    appId: "71",
    appName: "NETLOGIX",
    envId: "958",
    envName: "SIT-4"
  },
  {
    appId: "73",
    appName: "ConfigBuilder",
    envId: "963",
    envName: "SIT-4"
  },
  {
    appId: "73",
    appName: "ConfigBuilder",
    envId: "963",
    envName: "SIT-4"
  }
];
这就是我到目前为止所尝试的。我需要一个新的数组,其中的元素具有相同的appName,从上述两个数组到一个新数组

newArray.filter((a)=> {
        var key = a.appName;
        if (!this[key]) {
            this[key] = true;
            return true;
        }
    }, Object.create(null))
var z=[{
appId:“1”,
appName:“CapLogix”,
嫉妒:“970”,
环境名称:“UAT4”
},
{
appId:“1”,
appName:“CapLogix”,
嫉妒:“970”,
环境名称:“UAT4”
},
{
appId:“1”,
appName:“CapLogix”,
嫉妒:“970”,
环境名称:“UAT4”
},
{
附件:“21”,
appName:“NOCC”,
envId:“967”,
环境名称:“UAT4”
},
{
附件:“21”,
appName:“NOCC”,
envId:“967”,
环境名称:“UAT4”
},
{
附件:“21”,
appName:“NOCC”,
envId:“967”,
环境名称:“UAT4”
},
{
appId:“71”,
appName:“NETLOGIX”,
嫉妒:“972”,
环境名称:“UAT4”
},
{
appId:“71”,
appName:“NETLOGIX”,
嫉妒:“972”,
环境名称:“UAT4”
},
{
appId:“71”,
appName:“NETLOGIX”,
嫉妒:“972”,
环境名称:“UAT4”
},
{
附件:“73”,
appName:“ConfigBuilder”,
嫉妒:“971”,
环境名称:“UAT4”
},
{
附件:“73”,
appName:“ConfigBuilder”,
嫉妒:“971”,
环境名称:“UAT4”
}
];
变量y=[{
appId:“1”,
appName:“CapLogix”,
嫉妒:“959”,
环境名称:“SIT-4”
},
{
appId:“1”,
appName:“CapLogix”,
嫉妒:“959”,
环境名称:“SIT-4”
},
{
附件:“21”,
appName:“NOCC”,
envId:“965”,
环境名称:“SIT-4”
},
{
附件:“21”,
appName:“NOCC”,
envId:“965”,
环境名称:“SIT-4”
},
{
appId:“71”,
appName:“NETLOGIX”,
envId:“958”,
环境名称:“SIT-4”
},
{
appId:“71”,
appName:“NETLOGIX”,
envId:“958”,
环境名称:“SIT-4”
},
{
附件:“73”,
appName:“ConfigBuilder”,
envId:“963”,
环境名称:“SIT-4”
},
{
附件:“73”,
appName:“ConfigBuilder”,
envId:“963”,
环境名称:“SIT-4”
}
];
用于(变量i在z中){
if(z[i].appName==“NOCC”){
document.getElementById(“sa”).innerHTML++=“{+”
“+”appId:“+z[i].appId+”
“+”appName:“+z[i].appName+”
“+”envId:“+z[i].envId+”
“+”
“}”+“
”+”
“+”,“+”
”,“
”; } } 对于(y中的变量i){ 如果(y[i].appName==“NOCC”){ document.getElementById(“as”).innerHTML++=“{+”
“+”appId:+y[i]。appId+“
”+”appName:+y[i]。appName+“
”+”envId:+y[i]。envId+“
”+”envName:+y[i]。envName+“
“+”+”
“}+”+”
“+”,“+”
”,“
”; } }

检查代码段

这基本上是获取
z
y
中存在的值,然后创建一个新数组。然后过滤这个新数组以获得唯一值

如果在新数组中只需要唯一值,则可以添加下面的块

newArray.filter((a)=> {
        var key = a.appName;
        if (!this[key]) {
            this[key] = true;
            return true;
        }
    }, Object.create(null))
var z=[{
“appId”:“1”,
“appName”:“CapLogix”,
“envId”:“970”,
“环境名称”:“UAT4”,
},
{
“appId”:“1”,
“appName”:“CapLogix”,
“envId”:“970”,
“环境名称”:“UAT4”,
},
{
“appId”:“1”,
“appName”:“CapLogix”,
“envId”:“970”,
“环境名称”:“UAT4”,
},
{
“appId”:“21”,
“appName”:“NOCC”,
“envId”:“967”,
“环境名称”:“UAT4”,
},
{
“appId”:“21”,
“appName”:“NOCC”,
“envId”:“967”,
“环境名称”:“UAT4”,
},
{
“appId”:“21”,
“appName”:“NOCC”,
“envId”:“967”,
“环境名称”:“UAT4”,
},
{
“appId”:“71”,
“appName”:“NETLOGIX”,
“envId”:“972”,
“环境名称”:“UAT4”,
},
{
“appId”:“71”,
“appName”:“NETLOGIX”,
“envId”:“972”,
“环境名称”:“UAT4”,
},
{
“appId”:“71”,
“appName”:“NETLOGIX”,
“envId”:“972”,
“环境名称”:“UAT4”,
},
{
“appId”:“73”,
“appName”:“ConfigBuilder”,
“envId”:“971”,
“环境名称”:“UAT4”,
},
{
“appId”:“73”,
“appName”:“ConfigBuilder”,
“envId”:“971”,
“环境名称”:“UAT4”,
}
];
变量y=[{
“appId”:“1”,
“appName”:“CapLogix”,
“envId”:“959”,
“环境名称”:“SIT-4”,
},
{
“appId”:“1”,
“appName”:“CapLogix”,
“envId”:“959”,
“环境名称”:“SIT-4”,
},
{
“appId”:“21”,
“appName”:“NOCC”,
“envId”:“965”,
“环境名称”:“SIT-4”,
},
{
“appId”:“21”,
“appName”:“NOCC”,
“envId”:“965”,
“环境名称”:“SIT-4”,
},
{
“appId”:“71”,
“appName”:“NETLOGIX”,
“envId”:“958”,
“环境名称”:“SIT-4”,
},
{
“appId”:“71”,
“appName”:“NETLOGIX”,
“envId”:“958”,
“环境名称”:“SIT-4”,
},
{
“appId”:“73”,
“appName”:“ConfigBuilder”,
“envId”:“963”,
“环境名称”:“SIT-4”,
},
{
“appId”:“73”,
“appName”:“ConfigBuilder”,
“envId”:“963”,
“环境名称”:“SIT-4”,
}]
让newArray=z.filter(o1=>y.some(o2=>o1.appName===o2.appName));
设el='';
newArray.forEach(项=>{
el+=`id:${item.appId},应用程序名称:${item.appName}

`; }); document.getElementById('new')。innerHTML=el; //console.log(newArray)
这是具有相同值的新数组
  • 用于组合两个阵列

    z.concat(y)
    
  • 用于将所有具有匹配的
    appName
    值的对象分组在各自的单独数组中。为了保留每个数组名,它们都应该在单个对象文本中返回

    // result pattern
    {
      "CapLogix": [{
        "appId": "1",
        "appName": "CapLogix",
        "envId": "970",
        "envName": "UAT4"
    }, {...}],...}
    
  • 使用3来渲染:

  • 每个数组名称的
    ,例如

    CapLogix
  • 每个对象的

  • 每个键/值对的
    ,例如
    “envName”:“UAT4”
  • 用于将对象文字转换为数组数组

var z=[{appId:“1”,appName:“CapLogix”,envId:“970”,envName:“UAT4”},{appId:“CapLogix”,envId:“970”,envName:“UAT4”},{appId:“1”,appName:“CapLogix”,envId:“970”,envName:“UAT4”},{appId:“21”,appName:“NOCC”,envId:“967”,envName:“UAT4},{