我的问题是我需要过滤一组数据...

我的数据随身携带..

var arrayWithDuplicates = [
    {"licenseNum": "6", "state":"NV"},
    {"licenseNum": "6", "state":"NV"},
    {"licenseNum": "6", "state":"NV"},
    {"licenseNum": "6", "state":"CA"},
    {"licenseNum": "6", "state":"CA"},
    {"licenseNum": "6", "state":"OR"},
    {"licenseNum": "6", "state":"OR"},
    {"licenseNum": "6", "state":"OR"},
    {"licenseNum": "20", "state":"NV"},
    {"licenseNum": "10", "state":"CA"},
    {"licenseNum": "10", "state":"NV"},
    {"licenseNum": "10", "state":"OR"},
    {"licenseNum": "10", "state":"CA"}
];


新数据应该是

newdata = [6, 6, 6, 20, 10, 10, 10];


我试着做..

for (i = 0; i < arrayWithDuplicates .length; i++) {
                if ((arrayWithDuplicates[i].licenseNum) === -1)) {
                    newdata .push({
                        licenseNum: arrayWithDuplicates[i].licenseNum,
                        state: arrayWithDuplicates[i].state
                    });
                }
            };


这些得到的结果,我得到了..

newdata = [6, 20, 10]


我看到了很多很棒的例子,但仍然不能解决我的问题。非常感激。

最佳答案

var arrayWithDuplicates = [
    {"licenseNum": "6", state:"NV"},
    {"licenseNum": "6", state:"CA"},
    {"licenseNum": "6", state:"OR"},
    {"licenseNum": "6", state:"OR"},
    {"licenseNum": "6", state:"OR"},
    {"licenseNum": "20", state:"NV"},
    {"licenseNum": "10", state:"CA"},
    {"licenseNum": "10", state:"CA"},
    {"licenseNum": "10", state:"OR"},
    {"licenseNum": "10", state:"CA"}
];

var newdata = [];
var seens = [];
for(var i = 0; i < arrayWithDuplicates.length; i++) {
  var obj = arrayWithDuplicates[i];
  var lookupKey = obj.licenseNum + "|" + obj.state;
  if(seens.indexOf(lookupKey) == -1) {
    newdata.push(obj.licenseNum);
    seens.push(lookupKey);
  }
}

console.log(newdata);

07-28 02:38
查看更多