JavaScript:从数组中删除重复的元素值?

时间:2017-09-15 09:32:17

标签: javascript arrays json node.js

我有一个数组,如下所示,

[
  {
    "name": "Port 01",
    "portsActual": [ 
      "Hong Kong",
      "Ningbo, CN",
      "Hong Kong"     // remove this duplicate
    ]
  }
]

我知道如何处理这种重复,如

  

[ “一”, “B”, “C”, “一”, “d”]

with this solution

但不要面对上述重复。 请帮助我如何获得相关的o / p。

3 个答案:

答案 0 :(得分:3)

您可以使用app.post('/filehash', function(req, res) { var filePath = req.body.filePath; if (!filePath) { res.json(getErrorMessage('\'filePath\'')); return; } fileHash.generateHash(filePath,function(err,hashVal){ logger.info('hashVal---->>>> '+hashVal); res.send(hashVal); }); }); var generateHash = function(filePath,callback) { var algo = 'md5'; var shasum = crypto.createHash(algo); var response = ''; var s = fs.ReadStream(filePath); s.on('data', function(d) { shasum.update(d); }); s.on('end', function() { var d = shasum.digest('hex'); logger.debug('\n====== Creating filehash \'' + d + '\' ======\n'); console.log(d); response=d; callback(null,response); }); }; 来迭代数组。然后应用Array#filter来过滤重复值

Array#forEach

答案 1 :(得分:0)

只需使用一个简单的for循环来检查每个键并单独过滤它们以检查重复项。

 function checkNestedThenDelete(obj /*, level1, level2, ... levelN*/) {
          var args = Array.prototype.slice.call(arguments, 1);

          for (var i = 0; i < args.length; i++) {
            if (!obj || !obj.hasOwnProperty(args[i])) {
             obj[args[i]]= "";
              return true;
            }
            obj = obj[args[i]];
          }
          return false;
        }

        var test = {level1:{level2:{level3:'level3'}} };

        checkNestedThenDelete(test, 'level1', 'level2', 'level3'); // true
        checkNestedThenDelete(test,'level1', 'level2', 'foo'); // false

答案 2 :(得分:0)

直观的解决方案:

var arr = [1,1,2,3,3,3,3,4,5,5]
var arr2 =[];
        for(var i=0; i < (arr.length-1); i++){
                    if (arr2.indexOf(arr[i]) > -1 || arr[i] != arr[i+1]){                       
                        //Do Nothing and move on to the next set
                    }
                    else{
                        arr2.push(arr[i]);                  
                    }
        }