javascript - 在打字稿中的一组对象上展开运算符
问题描述
我正在尝试用它spread operator
来找到一个独特的集合
let obj = {
requests: [{
id: 'p1',
isOptional: false,
item: [Object]
},
{
id: 'p1',
isOptional: false,
item: [Object]
}
]
};
// I tried below.
let output = [...new Set(obj.requests)];
console.log(output);
但这没有用。
解决方案
你可以从这里得到你的问题的答案How to get distinct values from a array of objects in JavaScript? . 下面是解释为什么它没有像你预期的那样工作。
除非它们都有参考,否则您无法unique
objects
使用 using找到。所以在你的情况下,你似乎有两个不同的内部数组。从而将返回。Set
object
same
references
objects
Set
2
values
如果你同时拥有same
reference
(objects
例如 let o = {id: 'p1',isOptional: false,item: [Object]})和 let obj = {requests: [o,o]}那么它将返回唯一值.
您可以在Set
下面的屏幕截图中进行验证。
考虑下面的示例。
let o = {
id: 'p1',
isOptional: false,
item: {
id: 10
}
};
let obj = {
requests: [o, o]
}
let output = [...new Set(obj.requests)];
console.log('Output with unique reference');
console.log(output);
let o2 = {
id: 'p1',
isOptional: false,
item: {
id: 10
}
};
let obj2 = {
requests: [o, o2]
}
let output2 = [...new Set(obj2.requests)];
console.log('Output with different references');
console.log(output2);
推荐阅读
- javascript - Chai 测试一个不应该抛出 TypeError 的未定义
- reactjs - Laravel React MySQL 路由问题
- php - snmpbulkwalk 在 PHP 表中返回一个字符串。怎么分开?
- image - Xamarin 表单:图标/图像未显示以前通常可以使用的图标/图像
- mysql - 不明白 php MySQL 访问被拒绝的问题
- amazon-web-services - 使用 AWS Athena 查询按月计算成本
- python - 如何创建包含循环的 LinkedList?
- java - 当我将一个字符串拆分为多个字符串时,如何获取该字符串的某个部分?
- python - 从另一个函数访问一个函数中声明的变量
- wordpress - 同步 2 个不同的安装