国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Js:獲取數(shù)組對(duì)象重復(fù)屬性值和數(shù)組對(duì)象去重

這篇具有很好參考價(jià)值的文章主要介紹了Js:獲取數(shù)組對(duì)象重復(fù)屬性值和數(shù)組對(duì)象去重。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

數(shù)組去重

對(duì)象數(shù)組去重分為兩類:根據(jù)某一屬性去重,和去重完全相同對(duì)象(屬性屬性值都相同)
一.數(shù)組嵌套對(duì)象,根據(jù)對(duì)象某一屬性去重

let arr = [
	{id:1, setting:'demo', jointCategoryName:'success'},
	{id:2, setting:'dev', jointCategoryName:'success'},
	{id:3, setting:'prod', jointCategoryName:'fail'},
	{id:4, setting:'demo', jointCategoryName:'waiting'},
	{id:3, setting:'prod', jointCategoryName:'fail'},
	{id:2, setting:'test', jointCategoryName:'success'}
]
function unipFunc(arr){
	let arr1 = []; //存id
	let newArr = []; //存新數(shù)組
	for(let i in arr){
		if(arr1.indexOf(arr[i].id) == -1){
			arr1.push(arr[i].id);
			newArr.push(arr[i]);
		}
	}
	return newArr;
}

二、數(shù)組嵌套對(duì)象,去重完全相同對(duì)象(屬性屬性值都相同)

整理如下:
首先、循環(huán)數(shù)組,拿到對(duì)象的所有屬性組成的數(shù)組;
其次、循環(huán)屬性數(shù)組把對(duì)象的屬性和對(duì)應(yīng)的值拼接成字符串;
然后、利用 hasOwnProperty 方法判斷這個(gè)字符串是不是對(duì)象 obj 里的屬性,如果不是則以這個(gè)字符串為屬性,true為值給 obj 對(duì)象新增一個(gè)屬性;

let arr = [
	{id:1, setting:'demo', jointCategoryName:'success'},
	{id:2, setting:'dev', jointCategoryName:'success'},
	{id:3, setting:'prod', jointCategoryName:'fail'},
	{id:4, setting:'demo', jointCategoryName:'waiting'},
	{id:3, setting:'prod', jointCategoryName:'fail'},
	{id:2, setting:'test', jointCategoryName:'success'}
]
function unipFunc(arr){
	var newArr= []; //存新數(shù)組
    var obj= {}; //存處理后轉(zhuǎn)成字符串的對(duì)象
    for (var i = 0; i < arr.length; i++) {
        var keys = Object.keys(arr[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(arr[i][keys[j]]);
        }
        if (!obj.hasOwnProperty(str)) {
            newArr.push(arr[i]);
            obj[str] = true;
        }
    }
    return newArr;
}

三、普通數(shù)組去重

function unipFunc(arr) {
    let newArr = [];
    for (var i = 0; i < arr.length; i++) {
         if (newArr.indexOf(arr[i]) === -1) {
                newArr.push(arr[i]);
         }
    }
    return newArr;
}

四、普通數(shù)組獲取重復(fù)元素

方法一:indexOf和lastIndexOf
function unipFunc(arr) {
    let newArr = [];
    arr.forEach((item)=>{
        if(arr.indexOf(item) !== arr.lastIndexOf(item) && newArr.indexOf(item) === -1){
            newArr.push(item);
        }
    });
    return newArr;
}
方法二:雙層for循環(huán)
function unipFunc(arr) {
    var Arr = [];
    for(let i=0; i<arr.length; i++ ){
        for(let j=i+1; j<arr.length; j++){
            if(arr[i]===arr[j] && Arr.indexOf(arr[j])===-1){
                Arr.push(arr[i]);
            }
        }
    }
    return Arr;
}

五、數(shù)組嵌套對(duì)象,獲取重復(fù)元素和唯一元素及坐標(biāo)

//數(shù)據(jù)
const arr =[
    {id:1, schoolId:'100', jointCategoryName:'美術(shù)'},
	{id:2, schoolId:'200', jointCategoryName:'美術(shù)'},
	{id:3, schoolId:'300', jointCategoryName:'設(shè)計(jì)'},
	{id:4, schoolId:'100', jointCategoryName:'音樂(lè)'},
	{id:3, schoolId:'300', jointCategoryName:'設(shè)計(jì)'},
	{id:2, schoolId:'400', jointCategoryName:'美術(shù)'}
]
  let key = {} //存儲(chǔ)的 key 是type的值,value是在indeces中對(duì)應(yīng)數(shù)組的下標(biāo)
  let indices = [] //數(shù)組中每一個(gè)值是一個(gè)數(shù)組,數(shù)組中的每一個(gè)元素是原數(shù)組中相同type的下標(biāo) 
  arr.map((item, index) => {
    //根據(jù)對(duì)應(yīng)字段 分類(type)
    let type= item.type
    let _index = key[type]
    if (_index !== undefined) {
      indices[_index].push(index)
    } else {
      key[type] = indices.length
      indices.push([index])
    }
  })
  // 歸類結(jié)果
  let result = []
  indices.map((item) => {
    item.map((index) => {
    //result.push(List[index]) 相同項(xiàng)排序在一起
    //if (item.length > 1) {} 只要重復(fù)項(xiàng)
    //if (item.length == 1){} 只要單獨(dú)項(xiàng)
  
    //我這里需要重復(fù)項(xiàng) 根據(jù)業(yè)務(wù)處理
    if (item.length > 1) {
      result.push(arr[index])
    }
  })
  })
  console.log('獲取重復(fù)的值=====================>',result[0].type)
  return result;

六、Map()

let arrObj = [
    {id:1, schoolId:'100', jointCategoryName:'美術(shù)'},
	{id:2, schoolId:'200', jointCategoryName:'美術(shù)'},
	{id:3, schoolId:'300', jointCategoryName:'設(shè)計(jì)'},
	{id:4, schoolId:'100', jointCategoryName:'音樂(lè)'},
	{id:3, schoolId:'300', jointCategoryName:'設(shè)計(jì)'},
	{id:2, schoolId:'400', jointCategoryName:'美術(shù)'}
];
// 方法一:
let map = new Map();
for (let item of arrObj) {
    if (!map.has(item.id)) {
        map.set(item.id, item);
    };
};
arr = [...map.values()];
console.log(arr);
 
 
 
// 方法二: (代碼較為簡(jiǎn)潔)
const map = new Map();
const newArr = arrObj.filter(v => !map.has(v.id) && map.set(v.id, 1));
console.log(newArr);

七、數(shù)組去重
普通數(shù)組去重

let arr = [1, 1, 1, 2, 3, 4, 5, 5, 6];
let crr = [];
const res = arr.reduce((brr, va) => {
  if (!brr.includes(va)) {
    brr.push(va);
  } else {
    crr.push(va);
  }
  return brr;
}, []);
console.log(res);
console.log(crr);

數(shù)組對(duì)象去重
方法一

let arr = [{label:'你好',prop:'aa'},{label:'你好',prop:'aa'},{label:'你好2',prop:'bb1'},{label:'你好2',prop:'bb2'}]
let deWeightArr = []; // 去重后的數(shù)組
let repetitionArr  = []; // 重復(fù)的數(shù)組
arr.forEach((item1) => {
  const check = deWeightArr.every((item2) => {
    return item1.prop !== item2.prop;
  });
  check ? deWeightArr.push(item1) : repetitionArr.push(item1);
});
console.log('重復(fù)的數(shù)據(jù)================>>>>>',repetitionArr)
console.log('獲取數(shù)組去重后的數(shù)據(jù)================>>>>>',deWeightArr)

方法二

  this.repeatData = [];
  dataList.forEach((item) => {
    if (
      this.repeatData.filter((material) => material.archiveRank === item.archiveRank)
        .length === 0
    ) {
      this.repeatData.push(item);
    }
  });
  console.log('獲取重復(fù)的數(shù)組數(shù)據(jù)=====》<<<<<<<<<<<<<<<<<<<<<<<',this.repeatData)

原生去重文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812201.html

let arr = 
[
   	{id:1, schoolId:'100', jointCategoryName:'美術(shù)'},
	{id:2, schoolId:'200', jointCategoryName:'美術(shù)'},
	{id:3, schoolId:'300', jointCategoryName:'設(shè)計(jì)'},
	{id:4, schoolId:'100', jointCategoryName:'音樂(lè)'},
	{id:3, schoolId:'300', jointCategoryName:'設(shè)計(jì)'},
	{id:2, schoolId:'400', jointCategoryName:'美術(shù)'}
];
export const distinct = (arr) => {
  var result = [];
  var obj = {};
  for (var i = 0; i < arr.length; i++) {
    if (!obj[arr[i].jointCategoryName]) {
      result.push(arr[i]);
      obj[arr[i].jointCategoryName] = true;
    }
  }
  console.log('獲取重復(fù)的數(shù)組數(shù)據(jù)=====》<<<<<<<<<<<<<<<<<<<<<<<',result)
  return result;
};
distinct(arr)

到了這里,關(guān)于Js:獲取數(shù)組對(duì)象重復(fù)屬性值和數(shù)組對(duì)象去重的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • js中遍歷對(duì)象數(shù)組并獲取對(duì)象相應(yīng)的屬性值

    JavaScript中遍歷對(duì)象數(shù)組的方法有很多種。以下是常見(jiàn)的四種常見(jiàn)的方法: for ?循環(huán), for...of ?循環(huán), forEach ?方法和 map ?方法,在遍歷的同時(shí),通過(guò)訪問(wèn)對(duì)象的屬性來(lái)獲取相應(yīng)的值。 ? for ?循環(huán): ? for...of ?循環(huán): ? forEach ?方法: ? map ?方法(通常用于創(chuàng)建一個(gè)

    2023年04月25日
    瀏覽(25)
  • js兩個(gè)數(shù)組對(duì)象去重,刪除兩個(gè)數(shù)組中相同的對(duì)象、刪除數(shù)組對(duì)象中某個(gè)對(duì)象

    模擬一些數(shù)據(jù): 方式一:兩個(gè)數(shù)組通過(guò)arr1的id和arr2的id比較,返回去重后的arr1 ?寫(xiě)法二 打印的結(jié)果:console.log(newArr); 方式二:刪除兩個(gè)數(shù)組對(duì)象中相同的對(duì)象 方式三:es6 去掉兩個(gè)數(shù)組中相同值的對(duì)象 刪除數(shù)組中某一個(gè)對(duì)象、指定的對(duì)象 數(shù)組刪除其中的對(duì)象或元素,在前端

    2023年04月09日
    瀏覽(18)
  • js實(shí)用篇-去除數(shù)組或者對(duì)象里重復(fù)選項(xiàng)

    在 JavaScript 中,數(shù)組去重,對(duì)象去重,可以使用多種方法來(lái)去除數(shù)組或?qū)ο笾械闹貜?fù)項(xiàng)。以下是其中的一些方法: 方法一:使用 Set 使用 Set 是去除數(shù)組中重復(fù)項(xiàng)的最簡(jiǎn)單和最快的方法。Set 對(duì)象是一組不重復(fù)的值的集合,可以接受一個(gè)數(shù)組(或者具有可迭代屬性的其他對(duì)象)

    2024年02月16日
    瀏覽(22)
  • js判斷對(duì)象數(shù)組中的元素是否存在重復(fù)

    ?1、使用? Array.some() ?方法和自定義比較函數(shù): 使用? Array.some() ?方法遍歷數(shù)組,對(duì)每個(gè)元素執(zhí)行自定義的比較函數(shù)。比較函數(shù)使用? Array.findIndex() ?方法來(lái)查找與當(dāng)前元素相等且索引不同的元素,如果找到則表示存在重復(fù)元素。 2、使用? Set ?數(shù)據(jù)結(jié)構(gòu): 使用? Set ?數(shù)據(jù)結(jié)

    2024年02月13日
    瀏覽(97)
  • JS判斷對(duì)象、數(shù)組是否包含某個(gè)屬性、某個(gè)值

    可以使用以下幾種方法來(lái)判斷對(duì)象是否包含某個(gè)屬性: 1. in 操作符: 使用 in 操作符可以檢查對(duì)象是否包含指定的屬性。它會(huì)檢查對(duì)象及其原型鏈上的所有屬性。 2. hasOwnProperty() 方法: hasOwnProperty() 是對(duì)象的內(nèi)置方法,用于檢查對(duì)象自身是否具有指定的屬性(不包括原型鏈上

    2024年02月09日
    瀏覽(97)
  • js獲取對(duì)象屬性值的方法

    場(chǎng)景:已知對(duì)象的某屬性,我們需要獲取對(duì)象中的屬性值 js獲取對(duì)象屬性值的方法 通過(guò) . 獲取 通過(guò) [ ] 獲取 接下來(lái)介紹一下兩種方法的不同點(diǎn) [ ]運(yùn)算符可以用 數(shù)字 作為屬性名,點(diǎn)運(yùn)算符不能 [ ]運(yùn)算符可以用 變量 作為屬性名,點(diǎn)運(yùn)算符不能 ps: 用變量key獲取對(duì)象中的屬性

    2024年02月02日
    瀏覽(28)
  • js對(duì)象獲取屬性的方法(.和[]方式)

    js對(duì)象獲取屬性有兩種方法:1.通過(guò).的方式? 2. 通過(guò)[]方式 // 通過(guò).方式獲取屬性值,key是靜態(tài)的 var aa = {name: \\\"zhang\\\", age: 18}; console.log(aa.name); ? // 通過(guò)[]獲取屬性值, key是動(dòng)態(tài)的,可以是字符串,或者數(shù)字的形式 var bb = {\\\"apple\\\": 3, \\\"pear\\\": 2} var cc = {1: \\\"number1\\\", 2: \\\"number2\\\"} console.log(b

    2024年02月01日
    瀏覽(24)
  • js合并數(shù)組對(duì)象(將數(shù)組中具有相同屬性對(duì)象合并到一起,組成一個(gè)新的數(shù)組)

    js合并數(shù)組對(duì)象(將數(shù)組中具有相同屬性對(duì)象合并到一起,組成一個(gè)新的數(shù)組)

    1.原數(shù)組: 2.合并后數(shù)組: 3.實(shí)現(xiàn)方法: 4.測(cè)試: 1.原數(shù)組: 2.合并后數(shù)組: 3.實(shí)現(xiàn)方法一: 測(cè)試: 4.實(shí)現(xiàn)方法二: 測(cè)試:

    2024年02月08日
    瀏覽(30)
  • js在數(shù)組對(duì)象中添加和刪除鍵值對(duì)(對(duì)象屬性)的方法

    添加 1.Object.assign():用法-Object.assign(源對(duì)象, {要添加的鍵值對(duì)}) 2.拓展運(yùn)算符(...):用于取出參數(shù)對(duì)象所有可遍歷屬性然后拷貝到當(dāng)前對(duì)象 3.object[key] = value:直接給新的key賦值 刪除 1.將屬性設(shè)置為 undefined:屬性本身仍將存在于對(duì)象中,它還會(huì)改變?cè)紝?duì)象。 2.使用 delete 操

    2024年02月14日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包