我正在嘗試從下面的 Object 陣列中洗掉重復項,該陣列具有一些帶有陣列的嵌套元素
下面是我的陣列。
{
field: ‘A’,
value: {
key_A: ['ajd', 'ajd', 'kajd'],
},
},
{
field: ‘A’,
value: {
key_B: ['123', '4', '45', '94'],
},
},
{
field: 'A',
value: {
key_A: ['ajd', 'ajd', ''],
},
},
{
field: ‘A’,
value: {
key_B: ['123', '4', '45'],
},
},
{
field: ‘Z’,
value: {
key_A: ['ajdm', 'askjd', 'kajd'],
},
},
{
field: ‘Z’,
value: {
key_B: ['13', '123', '1823'],
},
},
{
field: ‘Z’,
value: {
key_A: ['ajdm', 'askjd', ''],
},
},
{
field: ’Z’,
value: {
key_B: ['13', '123', ''],
},
},
];
我想保留每個欄位下的第一個鍵, 即欄位“A”下的第一個 key_A 和欄位“A”下的第一個 key_B
欄位“Z”相同
所以最終的o / p:
{
field: ‘A’,
value: {
key_A: ['ajd', 'ajd', 'kajd'],
},
},
{
field: ‘A’,
value: {
key_B: ['123', '4', '45', '94'],
},
},
{
field: ‘Z’,
value: {
key_A: ['ajdm', 'askjd', 'kajd'],
},
},
{
field: ‘Z’,
value: {
key_B: ['13', '123', '1823'],
},
},
];
我嘗試了一些邏輯,過濾器在陣列上回圈,但對于嵌套無法找出邏輯。
uj5u.com熱心網友回復:
使用此處提供的答案的可能實作。findIndex給出滿足條件的第一個元素的索引,因此filter過濾掉滿足條件的第一個元素。
Object.keys(t.value)[0]給出"key_A"或"key_B"取決于元素
let arr = [ { field: 'A', value: { key_A: ['ajd', 'ajd', 'kajd'], }, }, { field: 'A', value: { key_B: ['123', '4', '45', '94'], }, }, { field: 'A', value: { key_A: ['ajd', 'ajd', ''], }, }, { field: 'A', value: { key_B: ['123', '4', '45'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', 'kajd'], }, }, { field: 'Z', value: { key_B: ['13', '123', '1823'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', ''], }, }, { field:'Z', value: { key_B: ['13', '123', ''], }, }, ];
let res = arr.filter((v, i, self) =>
i === self.findIndex((t) => (
t.field === v.field && Object.keys(t.value)[0] === Object.keys(v.value)[0]
))
)
console.log(res)
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489834.html
標籤:javascript 数组 目的
