【问题标题】:How to convert an object into array of values only [Typescript]如何仅将对象转换为值数组 [Typescript]
【发布时间】:2020-06-22 02:36:46
【问题描述】:

我正在尝试 Angular 的一些功能。我面临对象和数组的问题。假设我有一个自定义组件Filter 和一个服务FilterService。这是我的代码:

filter.component.ts

import { Component, OnInit } from '@angular/core';
import { FilterService } from '../services/sinsense-filter.service';

@Component({
    ...
})

export class FilterComponent implements OnInit {

  public appliedFilters: string[] = []

  constructor(public filterService: SisenseFilterService) {}

  ngOnInit() {
    var obj = this.filterService.filtersApplied;

    var result = Object.keys(obj).map(function (key) { 
        return [Number(key), obj[key]];
        // return [obj[key];
    }); 

    // this.appliedFilters=result;
    // console.log(this.appliedFilters);
    // console.log(typeof(result));

  }
}

注意:我已经注释掉了我尝试过的解决方案

这是服务代码filter-service.ts

import { Injectable } from '@angular/core';

@Injectable({
    providedIn: 'root'
})
export class FilterService {
    filtersApplied: object;
    constructor() {
        this.filtersApplied = new Object();
        
        this.filtersApplied={
            property1: "value1",
            property2: "value2",
            property3: "value3"
        }
    }
}

我正在关注 GeeksForGeeks 上的一篇文章: How to convert an Object {} to an Array [] of key-value pairs in JavaScript?

但出现兼容性错误:

类型 'any[][]' 不能分配给类型 'string[]'。

类型 'any[]' 不能分配给类型 'string'。

请纠正我。我不希望最终数组中的键。我只希望appliedFilters 成为:

["value1", "value2", "value3"]

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    .map operator 采用一个函数,该函数应该返回给定数组中每个元素的值,以便创建相同长度的新数组。因此,在您的代码中,您需要通过 obj[key] 返回所需的值,而不是为每个项目返回不必要的数组。

    ....
    var result = Object.keys(obj).map(function (key) { 
        return obj[key] // return just the value!
    }); 
    

    【讨论】:

    • 哦。我无法这样想。我真傻。 :-(
    • 请给我 1 分钟。我会快速运行一些单元测试用例。
    • 先生,这是完美的工作。但是当我做console.log(typeof(this.appliedFilters)); 时,为什么它仍然显示object?我期待一个数组。
    • 数组就是对象。
    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 2022-09-27
    • 2020-12-21
    • 2015-04-28
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多