我对 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. 计算重复次数
我用递归解决的第一个问题,希望能满足要求。第二个是关于实例计数..
希望对你有帮助
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/