在Javascript中,我试图获取一个初始数值值数组并计算其中的元素.理想情况下,结果将是两个新数组,第一个指定每个唯一元素,第二个包含每个元素出现的次数.但是,我愿意接受有关输出格式的建议.
例如,如果初始数组是:
5, 5, 5, 2, 2, 2, 2, 2, 9, 4
Run Code Online (Sandbox Code Playgroud)
然后将创建两个新阵列.第一个将包含每个唯一元素的名称:
5, 2, 9, 4
Run Code Online (Sandbox Code Playgroud)
第二个将包含元素在初始数组中出现的次数:
3, 5, 1, 1
Run Code Online (Sandbox Code Playgroud)
因为数字5在初始数组中出现三次,所以数字2出现五次,9和4出现一次.
我经常搜索一个解决方案,但似乎没有任何工作,我自己尝试过的所有东西都变得荒谬复杂.任何帮助,将不胜感激!
谢谢 :)
我正在寻找一种优雅的方法来确定哪个元素在JavaScript数组中出现次数最多(模式).
例如,在
['pear', 'apple', 'orange', 'apple']
Run Code Online (Sandbox Code Playgroud)
'apple'元素是最常见的元素.
我试图获取由 Dialogflow 聊天机器人使用完整代码构建的 javascript 数组中最常见的项目。但是,如果我可以显示数组,那么我尝试的函数似乎无法很好地找到最频繁的项目:
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
var answers = [];
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
function welcome(agent) {
agent.add(`Welcome to my agent!`);
}
function fallback(agent) {
agent.add(`I didn't understand FULLFILMENT`);
agent.add(`I'm sorry, can you try again? FULLFILMENT`);
}
function …Run Code Online (Sandbox Code Playgroud) 我有一个数组,希望得到最多出现的元素,
第一种情况
let arr1 = ['foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'baz', 'baz']
let newArr = someFunc(arr1)
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我希望新数组具有该值
console.log(newArr) // ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)
因为值'foo'和'bar'是数组中最常出现的元素
第二种情况
let arr2 = ['foo', 'foo', 'foo', 'bar', 'baz']
let newArr = someFunc(arr2)
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我希望新数组具有该值
console.log(newArr) // ['foo']
Run Code Online (Sandbox Code Playgroud)
因为值'foo'是数组中最常出现的元素
这是我尝试过的方法,即使有多个元素出现相同的时间,也只会让我获得其中一个元素
newArr= arr.sort((a,b) =>
arr.filter(v => v===a).length
- arr.filter(v => v===b).length
).pop()
Run Code Online (Sandbox Code Playgroud) 我试图获得数组值的最高出现次数,如果出现次数相等,我应该获得相同出现次数的第一个选定值。
例子:
var array = ['25', '50', 'a', 'a', 'b', 'c']
在这种情况下,我应该得到 a
var array = ['75', '100', 'a', 'b', 'b', 'a']
在这种情况下,我也应该得到 a
我已经完成了相当多的搜索,并找到了一些有用的帖子,例如:
不知何故,我似乎无法修改这些示例以适合我的情况。
现在我正在使用下面的代码,但它返回最后一个选择的相等事件,而不是第一个。(信用/sf/users/86684111/)
function mostFrequent(array){
return array.sort(function(a,b){
return array.filter(function(v){ return v===a }).length
- array.filter(function(v){ return v===b }).length
}).pop();
}
Run Code Online (Sandbox Code Playgroud)
欢迎对此提供任何帮助。