javascript - JS 中的函数,返回一个对象,该对象在数组中具有唯一值以及它们出现的次数

标签 javascript arrays

我对 JavaScript 还很陌生,这个练习已经困扰了我几个小时了。

我想编写一个 Javascript 函数,它需要一个可以包含字符串和/或数字的数组(以及有限级别的字符串和/或数字嵌套数组),并返回一个 Javascript 对象,该对象显示字符串和/或数字的总数。每个唯一值的出现次数。

类似这样的事情

var myArray = [ 1, 2, 1, 'a', [ 'd', 5, 6 ], 'A', 2, 'b', 1, 'd' ];
var myResult = myFunction( myArray );

然后它应该返回类似这样的内容

yourResult = {
    1: 3,
    2: 2,
    'a': 1,
    'd': 2,
    5: 1,
    6: 1,
    'A': 1,
    'b': 1,
}

到目前为止我所拥有的是这个。我不知道如何创建该对象,但这根本不起作用。它广告数组中的所有值

Array.prototype.contains = function(v) {
for(var i = 0; i < this.length; i++) {
    if(this[i] === v) return true;
}
return false;
};

Array.prototype.unique = function() {
var arr = [];
for(var i = 0; i < this.length; i++) {
    if(this[i] instanceof Array) {
        for(var j = 0; i < this[i].length; j++){
        if (!arr.contains(this[i][j])){
            arr.push(this[i][j]);
        }
        } 
    }
    if(!arr.contains(this[i])) {
        arr.push(this[i]);
    }
}
return arr;
}

var myArray = [1,3,4,2,1,[1,2,3,6],2,3,8];
var myResult = duplicates.unique();

console.log(myResult);  

最佳答案

我会将其分为两个主要问题: 1. 使数组成员为一层(不嵌套)。 2. 计算重复次数

我用递归解决的第一个问题,希望能满足要求。第二个是关于实例计数..

希望对你有帮助

Fiddle example

var myArray = [ 1, 2, 1, 'a', [ 'd', 5, 6 ], 'A', 2, 'b', 1, 'd' ];
var myResult = myFunction( myArray );
console.log(myResult);

function myFunction(arr) {
    var r = {};
    for (var i=0 ; i < arr.length ; i++) {
        if( Object.prototype.toString.call( arr[i] ) === '[object Array]' ) {
            var sub = myFunction(arr[i]);
            for (var attrname in sub) { 
                if (r[attrname])
                    r[attrname]++;
                else {
                     r[attrname] = sub[attrname]; 
                    r[attrname] = 1;
                }
            }
        }
        else if (r[arr[i]])
            r[arr[i]]++;
        else
            r[arr[i]] = 1;
    }

    return r;
}

关于javascript - JS 中的函数,返回一个对象,该对象在数组中具有唯一值以及它们出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30324124/

相关文章:

c++ - 指向 char 数组的指针的运行时中断错误

javascript - JavaScript 中的嵌套数组

javascript - 尝试从数组中选择一个随机索引 - 总是给我数组的最后一个索引

c 指针和数组

javascript - 当状态更新不影响 UI 时防止 "not wrapped in act(...)"Jest 警告

javascript - node.js mongojs findOne 回调返回错误为空

javascript - angularjs 表单验证显示页面加载成功

javascript - Knockout 在 vi​​ewmodel 中使用外部函数

javascript - CSS 过渡 : trigger transitionend not firing when user has accessibility option "reduced motion" set

javascript - 如何将对象数组传递给nodejs并将数组发送到mongo中的文档