使用JavaScript对象作为数组 函数removeDupes(){ var out=[], obj={}; 对于(x=0;x

使用JavaScript对象作为数组 函数removeDupes(){ var out=[], obj={}; 对于(x=0;x,javascript,arrays,object,Javascript,Arrays,Object,大家好,obj{}应该被声明为一个对象,但是为什么要将[]放在数组中并使用obj作为数组呢?谢谢someObject[“somePropertyName”]是访问对象属性的方式。(也可以使用someObject.somePropertyName,但前提是属性名称是有效标识符) 语法与数组没有特别的关系 数组只是一种对象类型,它包含一系列方法,这些方法以特殊方式处理整数属性名 (数字不是有效标识符,因此必须使用方括号语法访问名称为数字的属性)。someObject[“somePropertyNam

大家好,obj{}应该被声明为一个对象,但是为什么要将[]放在数组中并使用obj作为数组呢?谢谢

someObject[“somePropertyName”]
是访问对象属性的方式。(也可以使用
someObject.somePropertyName
,但前提是属性名称是有效标识符)

语法与数组没有特别的关系

数组只是一种对象类型,它包含一系列方法,这些方法以特殊方式处理整数属性名

(数字不是有效标识符,因此必须使用方括号语法访问名称为数字的属性)。

someObject[“somePropertyName”]
是访问对象属性的方式。(也可以使用
someObject.somePropertyName
,但前提是属性名称是有效标识符)

语法与数组没有特别的关系

数组只是一种对象类型,它包含一系列方法,这些方法以特殊方式处理整数属性名


(数字不是有效的标识符,因此必须使用方括号语法来访问名称为数字的属性)。

首先,让我们通过添加
intArray
作为参数并将循环迭代器声明为局部变量来修复
removedDupes
函数:

function removeDupes() {
  var out = [],
      obj = {};

   for (x = 0; x < intArray.length; x++) {
    obj[intArray[x]] = 1;
   }
        for (x in obj) {
         out.push(x);
        }
  return out;
}
现在,这是可行的,但它非常冗长。您可以通过使用
返回Object.values(obj)替换第二个循环来缩短它。甚至更短,使用:


首先,让我们通过添加
intArray
作为参数并将循环迭代器声明为局部变量来修复
removedDupes
函数:

function removeDupes() {
  var out = [],
      obj = {};

   for (x = 0; x < intArray.length; x++) {
    obj[intArray[x]] = 1;
   }
        for (x in obj) {
         out.push(x);
        }
  return out;
}
现在,这是可行的,但它非常冗长。您可以通过使用
返回Object.values(obj)替换第二个循环来缩短它。甚至更短,使用:


没有给出冗长的回答。查看此网站,可能会帮助您更好地理解JS。对我来说的确如此。。你说的“工作”是什么意思?预期的结果是什么?为什么它不能工作?数组也只是具有键值对的对象。你使用数组作为数字索引,但没有给出冗长的答案。查看此网站,可能会帮助您更好地理解JS。对我来说的确如此。。你说的“工作”是什么意思?预期的结果是什么?为什么它不能工作?数组也只是具有键值对的对象。使用数组作为数值索引。
function removeDupes(intArray) {
  var out = [],
      obj = {};

  for (var x = 0; x < intArray.length; x++) {
    obj[intArray[x]] = intArray[x];
  }
  for (var x in obj) {
    out.push(obj[x]);
  }
  return out;
}
function removeDupes(intArray) {
  return [...new Set(intArray)];
}