如何从JS Array过滤掉repeat元素?

时间:2018-06-03 19:00:50

标签: javascript

我有两个JS数组,如下所示:

If Condition Then Do_Something Else Do_Something_Else

获取物品的顺序:

$order = [];
$a = ['about','about','portfolio','contact'];

输出:[1,2,3,4]

但我想过滤掉重复项目,并获得[1,3,4]

之类的订单

另一个例子

for($i=0;$i<$a.length;$i++){
    $order.push($i+1);
}
console.log($order);

我想得到像[1,4,5]

这样的订单

我不确定我是否解释清楚。 任何人都可以给我一个建议吗?

2 个答案:

答案 0 :(得分:3)

可以使用Set存储唯一值,Array#map()可以根据Array#indexOf()

返回位置

&#13;
&#13;
const arr = ['about', 'about', 'about', 'portfolio', 'contact', 'contact']

const res = [...new Set(arr)].map(v => arr.indexOf(v) + 1)

console.log(res)
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用reduce来完成这项工作。

&#13;
&#13;
let order = [];
let a = ['about','about','portfolio','contact'];

a.reduce((acc, ele, index) => {
  if (acc.indexOf(ele) === -1) {
    acc.push(ele);
    order.push(index + 1)
  }
  return acc;
}, [])

console.log(order)
&#13;
&#13;
&#13;