我有一个这样的数组:var array = [111, 222, 000, 111, 111, 000, 1111]
到目前为止一切顺利。
如何将数组的所有值分配到最大值。具有相同值并获得 索引的2个插槽组(+以后删除所有小于2个元素的组) ?< / strong>
就像这样:
var result = {["111" : "0, 3"], ["222" : "1"], ["000" : "2, 5"], ["111" : "4, 6"]}
(
var end_result = {["111" : "0, 3"], ["000" : "2, 5"], ["111" : "4, 6"]}
)
: - :“111”是值
: - :“0,3”是数组的前2个索引
答案 0 :(得分:0)
您可以将对象用作单个插槽的哈希表。
var array = [111, 222, 000, 111, 111, 000, 111],
hash = Object.create(null),
result = array.reduce(function (r, a, i) {
if (hash[a]) {
hash[a][1] += ', ' + i;
hash[a] = 0;
return r;
}
hash[a] = [a, i];
return r.concat([hash[a]]);
}, []);
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;