Javascript 对象和方括号中的某些键是如何工作的?

Javascript 对象和方括号中的某些键是如何工作的?,javascript,arrays,Javascript,Arrays,有人能解释一下SEED[项目]是如何工作的吗 变量a=[a,a,a,b,b,c,D,D,e,6,6,7,8,9,a,'b','a',c,,]; 函数uniq_fasta{ var-seen={}; var out=[]; var len=a.长度; var j=0; forvar i=0;i

有人能解释一下SEED[项目]是如何工作的吗

变量a=[a,a,a,b,b,c,D,D,e,6,6,7,8,9,a,'b','a',c,,]; 函数uniq_fasta{ var-seen={}; var out=[]; var len=a.长度; var j=0; forvar i=0;iconsole.loge 从本质上说,这不超过
object['a']=object.a我已经在你的代码中添加了注释,你也可以检查google Developer工具或其他浏览器等效工具,在循环之前设置断点,并逐步查看每个变量的值

var a = ["a","a","a","b","b","c","D","D","e",6,6,7,8,9,"a",'b','a',"c","","","",""];

function uniq_fast(a) {
    var seen = {};
    var out = [];
    var len = a.length;
    var j = 0;
    // if i == 0;
    for(var i = 0; i < len; i++) {
         var item = a[i]; // item is "a" because that's first item in array
         if(seen[item] !== 1) {
               seen[item] = 1; // seen is {"a": 1} it's the same as seen['a'] = 1
               out[j++] = item;
         }
    }
    return out;
}
在第二个代码中:

var a = ["a","a","a","b","b","c","D","D","e",6,6,7,8,9,"a",'b','a',"c","","","",""];
for(var i = 0; i < a.length; i++) {
  var seen = {}; // you have empty object
  var item = a[i]; // item is "a"
  console.log(seen[item]); // this is undefined because seen["a"] is empty,
                           // you never adding anything to seen
}

seen[item]获取seen对象的属性值,该对象的键是变量项的值。@非常感谢。不幸的是,我无法理解您的意思。因此,在第二个代码段中,所有内容都未定义,因为您不再更新SEED变量,在第一个示例中,每次找到唯一值时,它都会更新:SEED[item]=1;没有什么可以说看见了吗???在第二个代码中,so seen保持为空对象。如果您请求一个不存在的属性,即console.logseen[item];,由于所看到的对象上不存在属性项,因此无法定义。对象具有属性。属性有名称。[]运算符使用[]之间表达式的值作为属性名来查找属性值。在您发布的代码中,seed[item]和a[i]之间没有真正的区别。