Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取javascript对象中每个对象的键值?_Javascript_Arrays_Object - Fatal编程技术网

如何获取javascript对象中每个对象的键值?

如何获取javascript对象中每个对象的键值?,javascript,arrays,object,Javascript,Arrays,Object,如果我在JS中有一个对象,如以下示例所示: var files = [ { "name":"test.png", "type":"image/png", "size":3536 }, { "name":"test.png", "type":"image/png", "size":3536 }, { "name":"test.png", "type":"image/png", "size":3536 }

如果我在JS中有一个对象,如以下示例所示:

var files = [
  {
    "name":"test.png",
    "type":"image/png",
    "size":3536
  },
  {
    "name":"test.png",
    "type":"image/png",
    "size":3536
  },
  {
    "name":"test.png",
    "type":"image/png",
    "size":3536
  }
];

列出每个对象的名称最有效的方法是什么?

使用
for
循环:

for (var i = 0; i < files.length; i++) {
    console.log(files[i].name);
}
for(var i=0;i
for(var i=0,l=files.length;i一个简单的for循环应该最有效:

for (var i = 0; i < files.length; i++) {
    console.log(files[i].name);
}
然后你会像这样迭代它们:

for (var key in files) {
    console.log("File name: " + key);
    console.log("File data: " + files[key]);
}

可能不是最有效的,但最短、最可读(IMO):


为什么要添加不必要的额外变量?如果你真的查看链接问题中提供的测试数据,你会发现在现代浏览器中,这并不是最快的解决方案。即便如此,这也是过早优化的另一个例子。chrome v36上的缓存长度似乎与你的评论相矛盾。请阅读jsperf lin在你链接的同一个问题中,有大量来自不同系统的不同样本(与你的单一测试相反),并且几乎所有样本都表明
while
解决方案是最快的。一些lib提供了
pull(files,“name”)
函数pull(x){return x[this];};var name=files.map(pull,“name”)、types=files.map(pull,“type”);或,或其中任何一种。可以使用更合适的副本重新打开和关闭。
var files = {
    "test1.png":
    {
        "type":"image/png",
        "size":3536
    },
    "test2.png":
    {
        "type":"image/png",
        "size":3536
    },
    "test3.png":
    {
        "type":"image/png",
        "size":3536
    }
};
for (var key in files) {
    console.log("File name: " + key);
    console.log("File data: " + files[key]);
}
var names = files.map(function (file) { return file.name; });