相关疑难解决方法(0)

获取JavaScript数组中的所有唯一值(删除重复项)

我有一系列数字,我需要确保它们是唯一的.我在互联网上找到了下面的代码片段,它的工作情况很好,直到数组中的数字为零.我发现这个其他脚本在SO上看起来几乎就像它,但它不会失败.

所以为了帮助我学习,有人可以帮我确定原型脚本出错的地方吗?

Array.prototype.getUnique = function() {
 var o = {}, a = [], i, e;
 for (i = 0; e = this[i]; i++) {o[e] = 1};
 for (e in o) {a.push (e)};
 return a;
}
Run Code Online (Sandbox Code Playgroud)

重复问题的更多答案:

类似的问题:

javascript arrays unique

1273
推荐指数
40
解决办法
122万
查看次数

如何从JavaScript中的对象数组中获取不同的值?

假设我有以下内容:

var array = 
    [
        {"name":"Joe", "age":17}, 
        {"name":"Bob", "age":17}, 
        {"name":"Carl", "age": 35}
    ]
Run Code Online (Sandbox Code Playgroud)

能够获得所有不同年龄的数组的最佳方法是什么,以便我得到一个结果数组:

[17, 35]
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以选择构造数据或更好的方法,这样我就不必遍历每个数组检查"age"的值并检查另一个数组是否存在,如果没有则添加它?

如果有某种方式我可以在没有迭代的情况下拉出不同的年龄......

我希望改进的当前无效方式......如果它意味着不是"数组"是一个对象数组,而是一个带有一些唯一键(即"1,2,3")的对象的"地图"好的 我只是在寻找性能最高效的方式.

以下是我目前的做法,但对我来说,虽然迭代确实有效,但迭代看起来效率很高......

var distinct = []
for (var i = 0; i < array.length; i++)
   if (array[i].age not in distinct)
      distinct.push(array[i].age)
Run Code Online (Sandbox Code Playgroud)

javascript arrays unique

325
推荐指数
27
解决办法
40万
查看次数

.includes()无法在Internet Explorer中使用

此代码在Internet Explorer中不起作用.还有其他选择

"abcde".includes("cd")
Run Code Online (Sandbox Code Playgroud)

javascript

88
推荐指数
4
解决办法
10万
查看次数

jQuery函数从数组中获取所有唯一元素?

jQuery.unique允许您获取数组的唯一元素,但文档称该函数主要供内部使用,并且仅对DOM元素进行操作.另一个SO响应表示该unique()函数对数字起作用,但是这个用例不一定是未来证据,因为它没有在文档中明确说明.

鉴于此,是否存在一个"标准"jQuery函数,用于仅访问数组中的唯一值 - 特别是整数等基元?(显然,我们可以使用函数构造一个循环each(),但我们是jQuery的新手,并且想知道是否有专用的jQuery函数.)

javascript jquery jquery-selectors

72
推荐指数
9
解决办法
13万
查看次数

过滤掉数组以仅包含唯一值

我需要过滤掉我的数组以仅包含唯一值.这是我的数组数据

["X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11"]
Run Code Online (Sandbox Code Playgroud)

预期的结果应该是

["X_row7", "X_row4", "X_row6", "X_row10", "X_row11", "X_row8", "X_row9"]
Run Code Online (Sandbox Code Playgroud)

我应该如何继续我的代码才能获得正确的结果.

newArray = [];
for(n in data){
  if(!newArray.indexOf(n)){
     newArray.push(n);
  }
}
console.log(newArray);
Run Code Online (Sandbox Code Playgroud)

如果您需要任何其他信息,请告诉我,我会提供.谢谢

javascript arrays

18
推荐指数
7
解决办法
7万
查看次数

获取javascript数组中唯一元素计数的最快方法

我需要找到数组中唯一元素的数量.

var myArray = [ 10, 10, 20, 20, 30, 30, 40, 40, 40, 40, 50, 50, 50, 50, 60 ];
Run Code Online (Sandbox Code Playgroud)

我想要count = 6(数组中的唯一元素数)

并且,有没有办法在不迭代数组的情况下执行此操作?(我认为这将是最快的方式?).

答案:我使用了.filter方法,如下所示.我的实际数组元素要复杂得多.我最终遍历我的数组并创建了一个新数组.新数组中的每个元素都是旧元素的.substr.然后,下面的.filter方法效果很好.谢谢大家!!

javascript

7
推荐指数
3
解决办法
5412
查看次数

仅在字符串中显示一次唯一字符

我有一个重复字母的字符串.我希望不止一次重复的字母只显示一次.例如,我有一个字符串aaabbbccc我希望结果是abc.到目前为止我的功能是这样的:

  • 如果这封信没有重复,则不会显示
  • 如果它重复一次,它只显示一次(即aa显示a)
  • 如果重复两次,则显示全部(即aaa显示aaa)
  • 如果重复3次,则显示6次(如果aaaa显示aaaaaa)
function unique_char(string) {
    var unique = '';
    var count = 0;
    for (var i = 0; i < string.length; i++) {
        for (var j = i+1; j < string.length; j++) {
            if (string[i] == string[j]) {
                count++;
                unique += string[i];
            }
        }
    }
    return unique;
}

document.write(unique_char('aaabbbccc'));
Run Code Online (Sandbox Code Playgroud)

该函数必须在循环内循环; 这就是为什么第二个for在第一个内部.

javascript string character unique

6
推荐指数
3
解决办法
2万
查看次数

从字符串中提取关键字:Javascript

让我们考虑一下我有一个字符串并想要提取不常见的关键字进行搜索引擎优化。$text = "This is some text. This is some text. Vending Machines are great.";

& 将定义一组常用单词来忽略提取列表中的关键字,例如$commonWords = ['i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','the','this','to','was','what','when','where','who','will','with','und','the','www'];

预期输出:Result=[some,text,machines,vending]

如果有人可以帮助我们编写从字符串中提取关键字的通用逻辑或过程,我将非常感激吗?

javascript arrays list

5
推荐指数
2
解决办法
7272
查看次数

如何获取*ngFor循环唯一记录

如何从此数组中获取唯一记录.我需要{{ subitem.author }}从这一系列项目中获得独特性.

<div *ngFor="let item of items">   
    <ion-list *ngFor="let subitem of item.items" (click)="authorquotes(subitem.author);">
        <ion-item >
            {{ subitem.author }} 
        </ion-item>
    </ion-list>
</div> 
Run Code Online (Sandbox Code Playgroud)

在具有多个记录的数组中.从那个数组中,我需要过滤独特的作者.

javascript angular

4
推荐指数
1
解决办法
1万
查看次数

使用 split 函数输出不同的值

我有以下数组:

var fruits = ["orange","orange,apple","apple,orange,pear"];
Run Code Online (Sandbox Code Playgroud)

我正在努力实现以下目标:

fruits = ["orange","apple","pear"]
Run Code Online (Sandbox Code Playgroud)

有什么建议,谢谢!

javascript jquery

3
推荐指数
1
解决办法
2707
查看次数

从ng-repeat中删除重复项

我有一个非常简单的数组,它有重复的值.我的数组是这样的:

$scope.type= ["Bar", "Pie", "Line", "Line", "Line", "Line", "Line", "Line", "map", "Line", "Bar", "Pie", "Pie", "Pie", "Pie", "Pie", "Pie", "Pie"]
Run Code Online (Sandbox Code Playgroud)

在我的重复中,我有这种情况

ng-repeat = types in type track by $index
Run Code Online (Sandbox Code Playgroud)

如何在ng-repeat中仅显示数组中的唯一值?

html javascript angularjs angularjs-ng-repeat

3
推荐指数
1
解决办法
4914
查看次数

使用javascript计算数组中出现的每个数字的出现次数

我试图计算数组中出现的数字的出现次数.
逻辑
所以我已经有一个包含数字的数组,所以我想只将唯一数字推入另一个数组.我还有另一个包含每个数字的计数的数组.

代码:

<html>
   <body>

      <script language="javascript" type="text/javascript">
         <!--
          var numbers = [ 2, 1, 2, 1, 3, 4, 2];
          var count = [];
          var newNumbers = [];

          newNumbers[0] = numbers[0];
          count[0] = 1;

          for(var i = 1 ; i < numbers.length ; i++){
              for(var j = 0 ; j < newNumbers.length ; j++){
                  if(numbers[i] == newNumbers[j]){
                      document.write("<br/>" + "Number Already Present" + " " +numbers[i]);
                  count[j] = count[j]++;

                  }else{
                      newNumbers.push(numbers[i]);
                  }
              }
          }
           for(var j = …
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
3006
查看次数

如何在不改变原始数组的情况下从时间复杂度为 O(n) 或更好的排序数组中获取唯一值

我想在不改变原始数组的情况下计算给定数组中的唯一值,但解决方案必须在time complexity of O(n). 到目前为止,所有我见过的解决方案,有time complexity of O(n^2) 喜欢这里。我在解决方案的逻辑中找不到错误。我是数据结构和算法的新手,想要一个简单的解决方案。

我的代码 -

const countUniqueValues = (arr) =>{
    if(arr.length === 0){
        return console.log(arr.length);
    }else if(arr.length === 1){
        return console.log(arr.length);
    }

    const unique = [];
    let i = 0;
    for( let j = 1; j < arr.length; j++){
        if(arr[i] !== arr[j]){
            i ++;
            unique.push(arr[i]);
        }
    }
    return console.log(unique);
}

//test cases
countUniqueValues([1,1,1,1,1,2]) // 2
countUniqueValues([1,2,3,4,4,4,7,7,12,12,13]) // 7
countUniqueValues([]) // 0
countUniqueValues([-2,-1,-1,0,1]) // 4
Run Code Online (Sandbox Code Playgroud)

错误的输出 -

[ 1 ] …
Run Code Online (Sandbox Code Playgroud)

javascript arrays algorithm time-complexity data-structures

1
推荐指数
1
解决办法
209
查看次数