Javascript 合并两个对象,然后过滤不起作用

Javascript 合并两个对象,然后过滤不起作用,javascript,angular,typescript,Javascript,Angular,Typescript,我有两个目标如下。调用筛选器方法对单个对象有效,但对合并对象无效 export class ClassName { public static urlsA = [ { url: '/url1', roles: ['Admin', 'User'] } , { url: '/url2', roles: ['Admin', 'Sale'] } , ]; public static urlsB = [ { url: '/url11', roles: ['Admin'

我有两个目标如下。调用筛选器方法对单个对象有效,但对合并对象无效

export class ClassName {
  public static urlsA = [
    { url: '/url1', roles: ['Admin', 'User'] } ,
    { url: '/url2', roles: ['Admin', 'Sale'] } ,
  ];

  public static urlsB = [
    { url: '/url11', roles: ['Admin', 'User'] } ,
    { url: '/url22', roles: ['Admin', 'Sale'] } ,
  ];

   public static urls = { ...ClassName.urlA, ...ClassName.urlB };

}
我在下面的另一个类中使用上述代码

  const a = ClassName.urls.filter(f => f.url === 'requiredURL')[0]; // throws Classname.urls.filter is not a function
  const a = ClassName.urlsA.filter(f => f.url === 'requiredURL')[0]; // Working...
  console.error(a);
  console.error(ClassName.urls); // showing in console.

Filter是一种可用于数组的not对象的方法,它可以扩展到数组中而不是对象中

改变这个

public static urls = { ...ClassName.urlA, ...ClassName.urlB };
对此

public static urls = [ ...ClassName.urlA, ...ClassName.urlB ];

您正在对象中解构,它应该是
[…ClassName.urlA,…ClassName.urlB]
公共静态URL=[…this.urlA,…this.urlB]因为您在同一个类中使用它,如果在另一个类中使用它,那么
公共静态URL=[…ClassName.urlA,…ClassName.urlB]