我有点想为数组中的唯一元素创建自己的set((方法作为mySet((。但是输出错误。帮帮我。
let arr = [1,2,3,4,5,2,8,1,3,1]
function mySet(arr){
let mapObj = {}
let newArr = []
for (let i = 0; i <arr.length; i++) {
if(mapObj[arr[i]]){
//skip
}else{
mapObj[arr[i]]=i
newArr.push(arr[i])
}
}
return newArr;
}
console.log(mySet(arr)) //i wanted [1,2,3,4,5,8] getting [1,2,3,4,5,8,1]
您需要对象的truthy值。在这种情况下,您可以使用true
。
该检查返回的结果为零(第一个索引(,与未为属性赋值的结果相同。
function mySet(arr) {
let mapObj = {}
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (!mapObj[arr[i]]) {
mapObj[arr[i]] = true;
newArr.push(arr[i])
}
}
return newArr;
}
let arr = [1, 2, 3, 4, 5, 2, 8, 1, 3, 1]
console.log(mySet(arr));
mapObj[arr[i]]=i
分配当前索引。
if(mapObj[arr[i]]){
将该值视为布尔值。
值1
的第一个索引出现在0
处。
所以你说mapObj[1] = 0
是false。
您需要指定true
而不是i
。