我需要从数组中删除重复项而不损害它们的顺序。请考虑这个数据数组
var array = [ { person: { amount: [1,1] } },
{ person: { amount: [1,1] } },
{ person: { amount: [2,1] } },
{ person: { amount: [1,2] } },
{ person: { amount: [1,2] } }];
Run Code Online (Sandbox Code Playgroud)
我知道它可以通过使用 new Set([iterable]) 来完成,但不能使用这个数组。如果有人有想法,请帮忙。提前致谢。
我从 api 收到以下数据结构:
[
{
id: '10000844',
text_id: '10000844-01',
},
{
id: '10000844',
text_id: '10000844-02',
},
{
id: '12000844',
text_id: '12000844-03',
},
{
id: '12000844',
text_id: '12000844-07',
},
{
id: '12000814',
text_id: '12000844-07',
},
{
id: '12002812',
text_id: '12000844-07',
},
{
id: '12000814',
text_id: '12000844-08',
},
]
Run Code Online (Sandbox Code Playgroud)
清理代码的完美结果将是这样的结果,基本上只返回第一个找到的 id:
[
{
id: '10000844',
text_id: '10000844-01',
},
{
id: '12000844',
text_id: '12000844-03',
},
{
id: '12000814',
text_id: '12000844-07',
},
{
id: '12002812',
text_id: '12000844-07',
},
]
Run Code Online (Sandbox Code Playgroud)
但目前它仅返回唯一数组中最后找到的重复项,当前代码为:
let uniqueArray = [...new …Run Code Online (Sandbox Code Playgroud) 可能重复:
从javascript中的对象数组中删除重复项
var arr = [{empID:100,empName:greg},{empID:101,empName:Math},{empID:100,empName:greg}];
var sorted_arr = arr.sort(); // You can define the comparing function here.
// JS by default uses a crappy string compare.
var results = [];
for (var i = 0; i < arr.length - 1; i++) {
if (sorted_arr[i + 1].empID != sorted_arr[i].empID) {
results.push(sorted_arr[i]);
}
}
alert(results);
Run Code Online (Sandbox Code Playgroud)
我有一个对象数组,但是当我尝试删除与ID匹配的重复对象时,它不会被删除.代码有什么问题.
我有一个像这样的对象数组:
arr = [
{label: Alex, value: Ninja},
{label: Bill, value: Op},
{label: Cill, value: iopop}
]
Run Code Online (Sandbox Code Playgroud)
这个数组是在渲染我的react组件时组成的.i用户Array.prototype.unshift在我的数组顶部添加所需的元素.所以我写arr.unshift({label: All, value: All}).当我的组件首次渲染时,我的数组成功创建了我想要的.但是当我重新渲染它时,它会向我显示值为{label: All, value: All}重复的数组.更具体地说,它显示如下:
arr = [
{label: All, value: All},
{label: All, value: All},
{label: Alex, value: Ninja},
{label: Bill, value: Op},
{label: Cill, value: iopop}
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我在这里尝试了特定主题中描述的方法,但它没有用
你能告诉我如何从类型脚本中的数组中删除重复项吗?
我的阵列看起来像
a = [{a: 1, b: 2}, {a: 1, b: 2}, {c: 3, d: 4}]
Run Code Online (Sandbox Code Playgroud)
我正在寻找
a = [{a: 1, b: 2}, {c: 3, d: 4}]
Run Code Online (Sandbox Code Playgroud)
我使用了如下设置数据结构
a = Array.from(new Set(a))
Run Code Online (Sandbox Code Playgroud)
但还是没有用。请让我知道如何使用单个语句从数组中删除重复项?
我似乎只找到使用其他JS库从数组中删除重复项的方法,但是由于我正在研究Angular项目,因此我希望使用纯JS或Typescript来做到这一点。
我的问题是,我可能会得到一个具有重复条目的数组,例如:
data [0: {Id: 1, Definition: "House"},
1: {Id: 1, Definition: "House"}]
Run Code Online (Sandbox Code Playgroud)
我想过滤掉它,以便我只得到
data [0: {Id: 1, Definition: "House"}]
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用此方法,但仍会得到重复的条目
let uniqueArray = data.filter(function(item, pos) {
return data.indexOf(item) == pos;
})
Run Code Online (Sandbox Code Playgroud) 我正在尝试重构一些代码以使用 javascript 过滤器函数来摆脱具有相同属性的对象。
schemas = schemas.filter((schema, index, newArray) => {
return index === schemas.findIndex(obj => obj.className == schema.className)
})
Run Code Online (Sandbox Code Playgroud)
schemas 是一个自定义对象 NameSchema 的数组:
interface NameSchema {
schemaId: string;
className: string;
}
Run Code Online (Sandbox Code Playgroud)
我在使用 findIndex 方法时遇到两个问题,编译器抱怨 NameSchema 上不存在 findIndex,并且数组中的许多对象具有相同的属性,但不是相同的对象。
如何使用 Array.filter 函数获取不具有不具有相同类名的对象的对象列表?
我在这里找到了答案:从 JavaScript 中的对象数组中删除重复项
我的代码最终看起来像这样:
schemas = schemas.filter((schema, index, self) => index === self.findIndex((obj) => (obj.className === schema.className)))
Run Code Online (Sandbox Code Playgroud)