js對陣列中相同物件元素進行去重,裡面物件相同id,其他不同屬性進行文字疊加
需求
js對陣列中相同物件元素進行去重,裡面物件相同id,其他不同屬性進行文字疊加
let arr1 = [
{
id: 1,
name: 'ui1'
}, {
id: 2,
name: 'ui2'
},
{
id: 2,
name: '測試'
},
{
id: 2,
name: 'ui2'
},
{
id: 3,
name: '前端'
}, {
id: 3,
name: 'ui3'
},
{
id: 3,
name: 'ui3'
},
{
id: 3,
name: 'ui3'
},
]
要求輸出
let arr1=[
{id:1,name:'ui1'},
{id:2,name:'ui2測試'},
{id:3,name:'前端測試'}
]
思路:
先對陣列去重,再進行相同id name的疊加,結果發現全部相同的id的name都會疊加,所以只取第一個相同id的name
上程式碼
<script>
let arr1 = [
{
id: 1,
name: 'ui1'
}, {
id: 2,
name: 'ui2'
},
{
id: 2,
name: '測試'
},
{
id: 2,
name: 'ui2'
},
{
id: 3,
name: '前端'
}, {
id: 3,
name: 'ui3'
},
{
id: 3,
name: 'ui3'
},
{
id: 3,
name: 'ui3'
},
]
// 先去重
function deteleObject(obj) {
var uniques = [];
var stringify = {};
for (var i = 0; i < obj.length; i++) {
var keys = Object.keys(obj[i]);
keys.sort(function (a, b) {
return (Number(a) - Number(b));
});
var str = '';
for (var j = 0; j < keys.length; j++) {
str += JSON.stringify(keys[j]);
str += JSON.stringify(obj[i][keys[j]]);
}
if (!stringify.hasOwnProperty(str)) {
uniques.push(obj[i]);
stringify[str] = true;
}
}
uniques = uniques;
return uniques;
}
arr1 = deteleObject(arr1)
console.log(arr1)
// 不同name相加
let arr2 = JSON.parse(JSON.stringify(arr1));
arr1.forEach(key => {
arr2.forEach(item => {
if (item.id == key.id && item.name !== key.name) {
key.name = key.name + item.name
}
})
})
// 發現name重複疊加
// 只取第一個相同id的疊加name
let obj = {}
arr1 = arr1.reduce((item, next) => {
obj[next.id] ? '' : obj[next.id] = true && item.push(next)
return item
}, [])
console.log(arr1)
</script>
結果
相關文章
- 合併陣列物件中相同的屬性值陣列物件
- 往物件陣列裡面新增相同的key 不同的value物件陣列
- 關於JS陣列中相同物件屬性值歸類方法的一點思考JS陣列物件
- js陣列物件去重JS陣列物件
- js物件陣列去重JS物件陣列
- js陣列物件相同項合併處理JS陣列物件
- js中給陣列中物件去重JS陣列物件
- Go 如何對陣列切片進行去重Go陣列
- 陣列物件根據物件中指定的屬性去重?你知道多少陣列物件
- Python如何進行陣列去重?Python陣列
- JS處理陣列內如果相同ID追加一個屬性(如字型顏色)JS陣列
- 陣列物件去重陣列物件
- 比較兩個物件是否相同,輸出不同的屬性值(一)物件
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- js 去掉陣列物件中的重複物件JS陣列物件
- 陣列filter方法對陣列元素進行過濾陣列Filter
- python-進階教程-使用物件屬性進行排序Python物件排序
- js去掉json中重複的id 重新push新的物件屬性JSON物件
- 陣列物件按物件某個屬性排序陣列物件排序
- 比較兩個陣列中是否有相同的元素陣列
- 陣列物件的去重然後排序陣列物件排序
- Js陣列物件的屬性值升序排序,並指定陣列中的某個物件移動到陣列的最前面JS陣列物件排序
- JS陣列去重 – JSON陣列去重陣列JSON
- 如何新增javascript陣列n乘以相同的元素JavaScript陣列
- Java淺複製大揭秘:如何輕鬆複製兩個不同物件的某些相同屬性Java物件
- js判斷物件裡面是否有某個屬性JS物件
- js如何使用索引訪問陣列物件中的元素JS索引陣列物件
- js物件屬性JS物件
- 自定義Map集合,將重複的鍵值對不進行覆蓋而是進行疊加
- css屬性與js中style物件的屬性對應表CSSJS物件
- php7中為物件/關聯陣列進行解構賦值PHP物件陣列賦值
- java陣列中重複元素的去重Java陣列
- JS 中特殊的物件-陣列JS物件陣列
- 「Js」物件按照鍵名來進行排序JS物件排序
- js陣列去重JS陣列
- JS單行、多行文字字元去重和行去重JS字元
- golang 陣列去重 移除陣列指定元素Golang陣列
- 如何對JAVA物件進行深拷貝Java物件