如何根据属性名称获取具有所有唯一值的数组?
在我的情况下,我的对象看起来像这样,我想要一个具有唯一documentID的数组。
const file = {
invoice: {
invoiceID: 1,
documentID: 5
},
reminders: [
{
reminderID: 1,
documentID: 1
},
{
reminderID: 2,
documentID: 1
}
]
}
结果应为数组[5, 1]
//唯一的documentID为5和1
似乎无法在Object.values()
函数中添加属性名称。
答案 0 :(得分:1)
您可以使用Set
获得唯一的文档ID。
const file = {
invoice: {
invoiceID: 1,
documentID: 5
},
reminders: [
{
reminderID: 1,
documentID: 1
},
{
reminderID: 2,
documentID: 1
}
],
payments: {
documentID : 5
}
};
var keys = Object.keys(file).map(key=>file[key].map ? file[key].map(i=>i.documentID) : file[key].documentID)
var keysFlattened= [].concat.apply([], keys);
var unique = new Set(keysFlattened);
console.log(Array.from(unique));
答案 1 :(得分:0)
我使用类似您想要的东西的东西
SELECT CASE WHEN OriginalNumber1 LIKE '%'+ CAST(Number1 AS VARCHAR(20)) +'%'
THEN Number1
ELSE OriginalNumber1 END AS Num1,
CASE WHEN OriginalNumber2 LIKE '%'+ CAST(Number2 AS VARCHAR(20)) +'%'
THEN Number2
ELSE OriginalNumber2 END AS Num2
FROM #Testtbl
然后,您可以简单地:const keepUniqueBy = key => (array, item) => {
if (array.find(i => item[key] === i[key])) {
return array;
} else {
return [ ...array, item ];
}
};
注意:它的性能可能很差,但是对于小型阵列而言,没关系。