我可能会走错路,我只是想今天在代码中获得一点乐趣。我确定图书馆也已经这样做了。
我正在创建一个通用的.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
函数,该函数根据键确定被推入数组的新对象是否唯一,如果是,则将其推入。
到目前为止,我只知道了由于明显原因而无法使用的伪代码:
ActiveCell.EntireRow.AutoFit
如何获取键的对象名称并将其指定给findIndex函数?
编辑:
在Titian Cernicova-Dragomir的帮助下,这是我目前的最终解决方案,非常适合我的POC需求!
pushUnique
答案 0 :(得分:1)
您可以传入键入为keyof T
的密钥,这意味着它必须是传入的T
的密钥,然后您可以使用索引访问来获取值:
class Util {
pushUnique<T>(arr: T[], obj: T, key: keyof T) {
if (key !== null) {
const index = arr.findIndex(o => o[key] === obj[key]);
}
}
}
new Util().pushUnique([{a: 1}], {a :2 }, "a")
new Util().pushUnique([{a: 1}], {a :2 }, "b") //err
您也可以使用函数代替keyof
,但这是JS / TS的处理方式:
class Util {
pushUnique<T, U>(arr: T[], obj: T, key: (o: T) => U) {
if (key !== null) {
const index = arr.findIndex(o => key(o) === key(o));
}
}
}
new Util().pushUnique([{a: 1}], {a :2 }, o => o.a)
new Util().pushUnique([{a: 1}], {a :2 }, o => o.b) //err