Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中创建数组最常用值的索引数组_Javascript_Arrays - Fatal编程技术网

在JavaScript中创建数组最常用值的索引数组

在JavaScript中创建数组最常用值的索引数组,javascript,arrays,Javascript,Arrays,如何创建数组中最常用值的索引数组(应排除空字符串)。我的数组大小总是3,这应该可以简化问题,但我还没有找到解决这个问题的方法。我使用的是JavaScript(ES5),因此无法访问Set 例如,以下各项都将返回空数组(将“”视为空字符串): 以下内容将返回: ["a", "a", " "] => [0, 1] ["a", "a", "c"] => [0, 1] [" ", "b", "b"] => [1, 2] ["a", "b", "b"] => [1, 2] ["c"

如何创建数组中最常用值的索引数组(应排除空字符串)。我的数组大小总是3,这应该可以简化问题,但我还没有找到解决这个问题的方法。我使用的是JavaScript(ES5),因此无法访问Set

例如,以下各项都将返回空数组(将“”视为空字符串):

以下内容将返回:

["a", "a", " "] => [0, 1]
["a", "a", "c"] => [0, 1]
[" ", "b", "b"] => [1, 2]
["a", "b", "b"] => [1, 2]
["c", " ", "c"] => [0, 2]
["c", "b", "c"] => [0, 2]
["c", "c", "c"] => [0, 1, 2]
您可以使用和

/[“c”,“b”,“c”]=>[0,2]
var arr=[“c”、“b”、“c”];
功能a(arr){
var结果=arr.REDUCT(功能(acc、cur、索引){
if(cur=''|cur='')返回acc;//跳过if值-空字符串
if(!acc.map[cur]){//if新值
acc.map[cur]=[index];//向映射添加索引
acc.result.push(acc.map[cur]);//向结果数组添加索引
}否则{
acc.map[cur].push(index);//将索引推送到结果数组
}
返回acc;
}, {
映射:{},
结果:[]
}).result.filter(函数(el){//仅获取长度大于1的数组
返回el.length>1;
})
.reduce(函数(acc,cur){//get具有最大长度的数组
返回acc.length>cur.length?acc:cur;
},[]);
document.getElementById('r').innerHTML+=JSON.stringify(arr)+'=>'+JSON.stringify(结果)+'
'; } a([“”,“”,“”]); a([“a”、“a”、“a”); a([“”,“,”b“,”); a([“”,“”,“,”c“]); a([“a”、“b”、“b”); a([,“b”,“c”); a([“a”、“a”、“c”); a([“a”、“b”、“c”); a([“a”、“a”、“a”); a([“a”、“a”、“c”); a([,“b”,“b”); a([“a”、“b”、“b”); a([“c”、“”、“c”]); a([“c”、“b”、“c”); a([“c”、“c”、“c”)
此功能:

函数myFunc(arr){
var copy=arr.slice(0),val,j;
var缓冲区=[];

for(i=0;Isimerar:你介意解释一下左右结果数组之间的区别吗?@AGE,用左值表示,用右索引表示,效果很好。其他答案也很好,但这个似乎最简单。
["a", "a", " "] => [0, 1]
["a", "a", "c"] => [0, 1]
[" ", "b", "b"] => [1, 2]
["a", "b", "b"] => [1, 2]
["c", " ", "c"] => [0, 2]
["c", "b", "c"] => [0, 2]
["c", "c", "c"] => [0, 1, 2]