我有两个JS数组,如下所示:
$order = [];
$a = ['about','about','portfolio','contact'];
获取项目的顺序:
for($i=0;$i<$a.length;$i++){
$order.push($i+1);
}
console.log($order);
输出: 1,2,3,4
但是我想过滤掉重复的项目,得到像1,3,4这样的顺序
另一个例子
$a = array('about','about','about','portfolio','contact','contact');
我想要像1,4,5这样的订单
我不确定我是否解释清楚了。有人能给我一个建议吗?
发布于 2018-06-04 03:10:24
可以使用Set
存储唯一值,使用Array#map()
根据Array#indexOf()
返回位置
const arr = ['about', 'about', 'about', 'portfolio', 'contact', 'contact']
const res = [...new Set(arr)].map(v => arr.indexOf(v) + 1)
console.log(res)
发布于 2018-06-04 03:06:25
你可以使用reduce来完成这项工作。
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)
https://stackoverflow.com/questions/50669938
复制相似问题