代码之家  ›  专栏  ›  技术社区  ›  Devmix

如何删除对象中的take属性下限值?

  •  0
  • Devmix  · 技术社区  · 6 年前

    有人能告诉我我的情况是什么吗

    function removeDuplicates(originalArray, prop) {
         var newArray = [];
         var lookupObject  = {};
    
         for(var i in originalArray) {
            lookupObject[originalArray[i][prop]] = originalArray[i];
         }
    
         for(i in lookupObject) {
             newArray.push(lookupObject[i]);
         }
          return newArray;
     }
     
     var arr = [{"id": 1, "val": 0},{"id": 2, "val": 0},{"id": 3, "val": 0},{"id": 1, "val": 1}];
     var myNewArray = removeDuplicates(arr, 'id');
     console.log(myNewArray);
    2 回复  |  直到 6 年前
        1
  •  0
  •   Ram    6 年前

    你只需要比较一下 .val 属性:

     function removeDuplicates(originalArray, prop) {
       var newArray = [];
       var lookupObject = {};
    
       // Modified lines
       for (var i in originalArray) {
         let item = lookupObject[originalArray[i][prop]];
         if (!item || item.val > originalArray[i].val) {
           lookupObject[originalArray[i][prop]] = originalArray[i];
         }
       }
    
       for (i in lookupObject) {
         newArray.push(lookupObject[i]);
       }
       return newArray;
     }
    
     var arr = [{
       "id": 1,
       "val": 0
     }, {
       "id": 2,
       "val": 0
     }, {
       "id": 3,
       "val": 0
     }, {
       "id": 1,
       "val": 1
     }];
     var myNewArray = removeDuplicates(arr, 'id');
     console.log(myNewArray);

    for ... in 用于遍历数组!

        2
  •  0
  •   Wolgan Ens    6 年前

    你可以检查一下原始数组是否存在;已在查找对象上,然后在已在查找值和循环中的当前值之间使用min()函数来设置该值。

    function removeDuplicates(originalArray, prop) {
         var newArray = [];
         var lookupObject  = {};
    
         for(var i in originalArray) {
            if (originalArray[i][prop] in lookupObject) {
                lookupObject[originalArray[i][prop]] = Math.max(lookupObject[originalArray[i][prop]], originalArray[i])
            } else {
                lookupObject[originalArray[i][prop]] = originalArray[i];
            }
    
         }
    
         for(i in lookupObject) {
             newArray.push(lookupObject[i]);
         }
          return newArray;
     }
    
     var arr = [{"id": 1, "val": 0},{"id": 2, "val": 0},{"id": 3, "val": 0},{"id": 1, "val": 1}];
     var myNewArray = removeDuplicates(arr, 'id');
     console.log(myNewArray);