Javascript:如何从重复的数组值中仅删除一个值

HiF*_*Ojt 4 javascript arrays jquery

我有一个重复三次的数组['2530491','2530491','2530491','2530492']2530491我想从其中的 3 个数组中删除单个值 2530491,因此输出将类似于 : ['2530491','2530491','2530492']

fileArrayAnnounce_size = jQuery.grep(fileArrayAnnounce_size, function(value){
  return value != file_size.metas[0].size;
});
Run Code Online (Sandbox Code Playgroud)

我尝试抓握,但它消除了所有相同的价值。我只想从重复项中删除单个值。

tym*_*eJV 5

您可以使用spliceindexOf来删除第一个实例:

fileArrayAnnounce_size.splice(fileArrayAnnounce_size.indexOf('2530491'), 1)
Run Code Online (Sandbox Code Playgroud)

更安全的方法:

var index = fileArrayAnnounce_size.indexOf('2530491')
if (index > -1) {
    fileArrayAnnounce_size.splice(index, 1);
}
Run Code Online (Sandbox Code Playgroud)

检查并删除重复项:

var mapOfValues = fileArrayAnnounce_size.reduce(function(vals, current) {
    if (vals[current]) {
        vals[current]++;
    } else {
        vals[current] = 1;
    }

    return vals;
}, {});
Run Code Online (Sandbox Code Playgroud)

现在检查并删除任何值超过 1 的内容:

for (var value in mapOfValues) {
    if (mapOfValues[value] > 1) {
        var idx = fileArrayAnnounce_size.indexOf(value);
        fileArrayAnnounce_size.splice(idx, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

演示: https: //jsfiddle.net/1277mxt9/

  • 不明白这如何验证重复项是否存在 (2认同)