首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Javascript函数中返回动态(键,值)对

如何在Javascript函数中返回动态(键,值)对
EN

Stack Overflow用户
提问于 2018-08-23 16:14:05
回答 1查看 44关注 0票数 0

我正在尝试编写一个函数,它将返回动态键,值对。

服务:

代码语言:javascript
复制
getContentfulEntries(query: QueryEntries, keyQuery?: QueryFilters[]): Observable<any> {
    const buildQuery = (obj) => {
      const propName = obj.inequality ? obj.key : obj.key + '[ne]';
      const propValue = obj.value.join(', ');
      console.log('test', propName, propValue);
      return { [propName]: propValue  };
    };
      const contentEntries = this.client.getEntries(Object.assign(query, buildQuery(keyQuery)));
    return from(contentEntries).pipe
      (map ((res: any) => res.items));
  }

主计长:

代码语言:javascript
复制
export class AppComponent implements OnInit {
  title = 'Setup Environment';
  private entriesSubscription: Subscription;

  queries: QueryEntries = {
    content_type: 'product'
  };
  keyQueries = [
    {
      key: 'sys.type',
      value: ['Entry'],
      inequality: true
    },
    {
      key: 'sys.id',
      value: ['2zqB3mZMaQOm0uIyIAus8w'],
      inequality: true
    }
  ];

  constructor(private contentfulService: ContentfulService) {
  }

  ngOnInit() {
    console.log(this.queries, this.keyQueries);
    this.contentfulService.getContentfulEntries(this.queries, this.keyQueries)
      .subscribe(res => console.log('ContentfulEntries::', res));
  }
}

接口:

代码语言:javascript
复制
export interface QueryFilters {
  key: string;
  value: string;
  minrange?: number;
  maxrange?: number;
  inequality: boolean; /*Need to specify a content_type in order to use this*/
}

因此,在我的最后一个控制器中,在我的查询中,我得到了键:“sys.type”和值:“Entry”。但我希望它返回"sys.type":"Entry“。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 16:15:51

像这样创建你的对象

代码语言:javascript
复制
let propName = keyQuery.key + '[ne]';
let propValue = keyQuery.value;

const obj = { [propName]: propValue };

功能代码部分。我还对您的代码进行了一些重构。

代码语言:javascript
复制
getContentfulEntries(query: QueryEntries, keyQuery?: QueryFilters): Observable<any> {

      let propName = keyQuery.key + '[ne]';
      let propValue = keyQuery.value;

      const obj = { [propName]: propValue };

      const contentEntries = this.client.getEntries(Object.assign(query, obj));
      return from(contentEntries).pipe(map ((res: any) => res.items));

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51990145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档