javascript - 类型 number[][] 不可分配给类型 number[]

标签 javascript arrays typescript

我正在尝试使用 .filter.map 通过 key 属性返回数字数组:

public getDefaultValues(key: string): number[]{

    let options = [
    {
        key: 'cl',
        values: [
            5000,
            10000,
            15000,
            30000,
            50000
        ]
    }]

    return options
    .filter(function(obj) {
        return obj.key == key;
    })
    .map(function(obj){
        return obj.values;
    });
}

但我收到错误:

Type 'number[][]' is not assignable to type 'number[]'. Type 'number[]' is not assignable to type 'number'.

我该如何解决这个问题?

最佳答案

过滤器将返回一组匹配项,因此在本例中您将得到一个包含一项的数组。然后,您将获取该数组结果并在其上使用 map 来返回数组结果,这就是您返回数组数组的原因,因此会出现错误。

您应该使用 find 以及可能的小错误检查,如下所示:

return (options
    .find(function(obj) {
      return obj.key == key;
    }) || { values: [] }).values

这是一个演示:

console.log(([{key:5, values: [1]}].find(function(obj) {
      return obj.key == 5;
    }) || { values: [] }).values);
console.log(([{key:6, values: [1]}].find(function(obj) {
      return obj.key == 5;
    }) || { values: [] }).values);

关于javascript - 类型 number[][] 不可分配给类型 number[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49618202/

相关文章:

javascript - 聚合多个对象数组并汇总它们的属性

javascript - Jquery 从 ajax 调用的回调中延迟

javascript - 无法使用带有 ssh2 模块的 nodejs 进行身份验证,即使手动 ssh 有效

javascript - jQuery makeDraggable 有更多技巧吗?

arrays - 子数组长度 > 0 的最小和

.net - IronPython - 将 int 转换为字节数组

typescript - Multer 处理错误, typescript 类型有问题

angular - 如何在 angular 2 RC5 中测试此服务?

Visual Studio 2017 中的 Angular 5 看不到文件更改

javascript - 无法从文件名探测 mimetype