循环遍历数组并仅获取相同的值一次

时间:2016-04-28 03:05:15

标签: javascript arrays

我有一个数组

var myArray = ['1','1','2','2','1','3'] // 6 item

有什么方法可以在循环时返回1和2和3的值?

//example in pseudocode
var getNumber = [];
var count = 0;
var check = 0;

for(var i in myArray)
{
     if(getNumber[check] !== myArray[i])
     {    
          getNumber[count] = myArray[i];
          count++;
     }
     else
     {

     }
}

建议跟进我之前的代码?

感谢

5 个答案:

答案 0 :(得分:0)

你可以做点什么:

function leaveDupes(arry){
  var newArry = [], keys={};
  for(var i in arry){
    if(!keys[arry[i]]){
      newArry.push(arry[i]);
      keys[arry[i]]=true;
    }
  }
  return newArry;
}

console.log(leaveDupes(['1','1','2','2','1','3'] ))

使用underscore.js,您可以执行以下操作:

newArry = _.uniq(['1','1','2','2','1','3']);

答案 1 :(得分:0)

您应该使用Array.indexOf和Array.push来检查和插入值。

var getNumber = [];

for(var i in myArray)
{
     if(getNumber.indexOf(myArray[i]) < 0)    //See if the number wasn't found already
     {    
          getNumber.push(myArray[i]);

     }
     else
     {
           //This number was found before. Do nothing!
     }
}

答案 2 :(得分:0)

var obj = {};
for (var i = 0; i < myArray.length; i++) {
    if (!obj[myArray[i]]) {
        obj[myArray[i]] = true;
        console.log(myArray[i]); //these are the unique values
    }
}

答案 3 :(得分:0)

这样可行。

var myArray = ['1','1','2','2','1','3']
var getNumber = {};
var retArray = [];

myArray.forEach(function(val){
  if(!getNumber[val]){
    getNumber[val] = val;
    retArray.push(val);
  }
});

return retArray

答案 4 :(得分:0)

您可以使用forEachindexOf数组方法查找唯一元素。

var myArray = ['1','1','2','2','1','3','4','4','5'];
   var uniqueArray =[]; //A new array which will hold unique values
   function _unique(myArray){
     myArray.forEach(function(item,index){
       if(uniqueArray.indexOf(item) ==-1){  //Check if new array contains item
        uniqueArray.push(item)
       }
     })

   }
 _unique(myArray);