use*_*342 3 javascript php phpjs
我有以下PHP脚本,现在我需要在JavaScript中做同样的事情.JavaScript中的函数是否与PHP函数类似,我一直在搜索但找不到类似的东西?我想要做的是计算某个单词在数组中使用的次数.
$interfaceA = array($interfaceA_1,$interfaceA_2,$interfaceA_3,$interfaceA_4,$interfaceA_5,$interfaceA_6,$interfaceA_7,$interfaceA_8);
$interfaceA_array=array_count_values($interfaceA);
$knappsatsA = $interfaceA_array[gui_knappsats];
$touchpanelA = $interfaceA_array[gui_touchpanel];
Run Code Online (Sandbox Code Playgroud)
Dhr*_*hak 11
为什么不简单地创建一个新的javascript数组"count"迭代原始数组,并增加数组中遇到的键的"计数"计数. http://jsfiddle.net/4t28P/1/
var myCurrentArray = new Array("apple","banana","apple","orange","banana","apple");
var counts = {};
for(var i=0;i< myCurrentArray.length;i++)
{
var key = myCurrentArray[i];
counts[key] = (counts[key])? counts[key] + 1 : 1 ;
}
alert(counts['apple']);
alert(counts['banana']);
Run Code Online (Sandbox Code Playgroud)
小智 6
另一个优雅的解决方案是使用Array.prototype.reduce.鉴于:
var arr = new Array("apple","banana","apple","orange","banana","apple");
Run Code Online (Sandbox Code Playgroud)
你可以在它上面运行reduce:
var groups =
arr.reduce(function(acc,e){acc[e] = (e in acc ? acc[e]+1 : 1); return acc}, {});
Run Code Online (Sandbox Code Playgroud)
最后你可以查看结果:
groups['apple'];
groups['banana'];
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,reduce有两个参数:
无论函数返回什么,它都将在下一次调用中用作累加器值.
从类型的角度来看,无论数组元素的类型如何,累加器的类型必须与reduce(初始值)的第二个参数的类型以及匿名函数的返回值的类型相匹配.这也是reduce的返回值的类型.
尝试
array.reduce((a,c) => (a[c] = ++a[c] || 1, a) ,{});
Run Code Online (Sandbox Code Playgroud)
array.reduce((a,c) => (a[c] = ++a[c] || 1, a) ,{});
Run Code Online (Sandbox Code Playgroud)