如果JavaScript数组中的每个项目显示数字

时间:2014-01-25 05:51:27

标签: javascript arrays

我试图以更易读的方式显示数组的内容,这是数组:

["malevolent", "pariah", "judicious", "pariah", "judicious"]

我只是将该数组添加到HTML元素中以显示它,但我想像这样显示它:

malevolent, pariah x 2, judicious x2

我该怎么做?

4 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

var myArray = ["malevolent", "pariah", "judicious", "pariah", "judicious"];
var resultArray = [];
var countArray = [];

for(index in myArray) {
    var element = myArray[index];
    var isInArray = resultArray.indexOf(element);
    if(isInArray !== -1) {
        var tmpCnt = countArray[isInArray];
        tmpCnt++;
        countArray[isInArray] = tmpCnt;
    } else {
        resultArray.push(element);
        countArray.push(1);
    }
}
console.log(resultArray);
console.log(countArray);

答案 1 :(得分:1)

实际上很简单:

var myArray = new Array("a", "b", "c", "b", "a");
var newObject = {};
// Iterate over the array
for(var i = 0; i < myArray.length; i++){
    // If the new object already contains the key (e.g. a, b, or c), increment value by one
    if(myArray[i] in newObject){
        newObject[myArray[i]]++;   
    } else {
        // Otherwise add a key (e.g. a, b, or c) to the object and assign 1 to it (first occurence)
        newObject[myArray[i]] = 1;   
    }
}
// Write the resulting object to console
window.console && console.log(newObject);

newObject包含密钥列表(a,b,c)和值(每个密钥的出现次数)。您可以使用该数据以您喜欢的任何格式输出它,但这只是作为一个练习。

答案 2 :(得分:0)

Felix Kling提供了一个关于如何计算元素的答案的链接。我只是无耻地使用那里描述的reduce方法然后迭代对象来构建一个字符串。

var a = ["malevolent", "pariah", "judicious", "pariah", "judicious"].reduce(function (acc, curr) {
    if (typeof acc[curr] == 'undefined') {
        acc[curr] = 1;
    } else {
        acc[curr] += 1;
    }

    return acc;
}, {});

var out = "";

for (var k in a) {
    out += k + " x " + a[k] + "; ";
}

console.log(out);

答案 3 :(得分:-1)

试试这个

      var arr = new Array("malevolent", "pariah", "judicious", "pariah", "judicious");

    var new_arr1 = new Array(); // for containing distinct values like pariah
    var new_arr2 = new Array(); // for containing distinct values count like 2 for pariah

   // both will be on same index in new_arr1 and new_arr2

    for(var i=0; i<arr.length; i++)
    {
          // fetch every value of arr

        var indx = $.inArray(arr[i], new_arr1); // check value is exists in new_arr1 and get index

        if(indx > -1) // values exists in new_arr1
        {
             var v = new_arr2[indx]+1; // increment the previous count +1
             new_arr2[indx] = v; // update it on the index of new_arr2
        }
        else         
        {
           // if value not in new_arr1 means the value comes first time
            var l = new_arr1.length;
            new_arr1[l] = arr[i]; // insert value in new_arr1
            new_arr2[l] =  1;         // initate count 1 for the same index of new value in new_arr2 
        }
    }


// now new_arr1 will contains the distinct values
// and new_arr2 contains the count for distinct values 
// eg new_arr1[0] = 'malevolent';
//    new_arr2[0] = 1;

//    new_arr1[1] = 'pariah';
//    new_arr2[1] = 2;


//  now you can fetch distinct values and their count like given below
    for(var i=0; i<new_arr1.length; i++)
    {
       var str = new_arr1[i]+" X "+new_arr2[i];
       alert(str);
    }

请参阅FIDDLE