我正在尝试使用 .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/