我使用 lodash v4.17.10
获得的错误是'LoDashExplicitWrapper<string[]>' is not assignable to type 'string[]'. Property 'length' is missing in type 'LoDashExplicitWrapper<string[]>'.
我有一个对象数组,我试图获得一个只在每个对象上只有一个属性的唯一值的数组。
代码:
let carMakes: string[]
const inventory = [
{ make: "ford", model: "Focus" },
{ make: "ford", model: "F-150" },
{ make: "chevy", model: "Camaro" }
carMakes = _.chain(inventory)
.map('make')
.uniq()
有什么方法可以用链接来完成这项工作,因为它可以看起来像一个很好的干净解决方案,虽然它不起作用(在我的Angular项目中)
答案 0 :(得分:1)
只需使用普通的js Set和map()
数据一次。通过使用Array.from()
直接将其重新转换为数组,您可以获得所需的string[]
。
const inventory = [{
make: "ford",
model: "Focus"
},
{
make: "ford",
model: "F-150"
},
{
make: "chevy",
model: "Camaro"
}
];
const unique = Array.from(new Set(inventory.map(({make}) => make)));
console.log(unique);
答案 1 :(得分:0)
我以前应该看过这个。 _.chain()
的{{3}}说:
创建一个lodash包装器实例,该实例在启用显式方法链序列的情况下包装值。这些序列的结果必须用_#value打开。
因此,这就是使其发挥作用所需的一切:
carMakes = _.chain(inventory)
.map('make')
.uniq()
.value()
之前我曾尝试过这个,但是VS Code并没有删除错误,直到我徘徊在value()
之上,然后错误就消失了。由于我之前没有这样做,我认为它没有用。