作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想按数组的键进行计数。并比较它们的数量
var count = function(arr) {
var result = {};
for (var i = 0 ; i < arr.length ; i++) {
var key = arr[i];
result[key] = ++result[key] || 1;
}
return result
};
var diff = function(first, second) {
var first_copy = {};
for (var key in first) {
first_copy[key] = first[key];
if (second[key]) {
first_copy[key] -= second[key]
}
}
return first_copy;
};
var first = [1, 1, 1, 2, 2, 3],
second = [1, 1, 2, 2, 2];
first = count(first);
second = count(second);
console.log(diff(first, second));
console.log(diff(second, first));
预期输出
Object {1: 1, 2: -1, 3: 1} // first - second
Object {1: -1, 2: 1} // second - first
最佳答案
如果您的目标是提高可读性,我建议使用 underscorejs ( http://underscorejs.org/ )。
以下是使用 underscorejs 的方法:
function diff(o1, o2){
return _.chain(_.keys(o1))
.map(function(e){
return [e, (o1[e] - (o2[e] || 0))];
})
.object()
.value();
}
first = [1, 1, 1, 2, 2, 3]
second = [1, 1, 2, 2, 2]
firstCount = _.countBy(first, _.id)
secondCount = _.countBy(second, _.id)
console.log(diff(firstCount, secondCount))
console.log(diff(secondCount, firstCount))
关于javascript - 你有比下面的代码更聪明的算法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700712/
我正在尝试切换(某种)命令。 if 'Who' in line.split()[:3]: Who(line) elif 'Where' in line.split()[:3]: W
基本上我是在一个物理游戏中计算阻力。侧向运动需要减少(如接近 0,而不仅仅是负数),但我不知道它在哪个方向行进,所以我不知道是增加阻力还是减去阻力。 (如果一个项目向右移动,它有正向力,向左移动,负向
我有以下表格 CREATE TABLE Foos ( [Id] INT IDENTITY, -- Other fields ) CREATE TABLE Boos ( [Id]
我正在运行一个非常简单的程序 static void Main(string[] args) { Console.WriteLine(Get4S());
PHP $total_points = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM account WHERE id='$id'"),0
我是一名优秀的程序员,十分优秀!