for...in 语句 - 任意顺序是什么意思
for...in statement - what does arbitrary order mean
我有一个非常基本的 ECMAScript 问题,我不确定是否阅读文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
或问题。
我想遍历一个对象,例如构造一个数组。另见我的问题:
如果我使用 d3.js 读取 csv 文件,我将获得一个对象数组。我想从中构建一个数组数组,所以我使用了一个 for (key in obj) 语句。我是否必须对每个对象进行 属性 检查以确保正确的顺序(任意顺序的一种解释),或者我是否可以假设属性将以相同的顺序拾取(第二种解释:只是顺序是任意的 -但稳定)。似乎很多例子都假设了后一种解释。
有人可以澄清一下吗?
您不应期望 for..in
语句以任何特定顺序遍历您的对象属性,即使是在具有相同属性的对象的迭代中也是如此。您可以采取不同的方法来确保正确的顺序,这是我经常使用的方法:
// this is the order I want the values in
var order = ['id', 'first', 'last'];
var collection = [{ first: 'Jane', last: 'Doe', id: 1}, {last: 'Smith', id: 2, first: 'John'}];
var outputArray = [];
collection.forEach(function(row){
var tmpRow = [];
for(var attr in row){
// get the target index of the current attribute
var index = order.indexOf(attr);
// insert into desired position
tmpRow[index] = row[attr];
}
outputArray.push(tmpRow);
})
console.log(outputArray)
希望对您有所帮助。
我有一个非常基本的 ECMAScript 问题,我不确定是否阅读文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in 或问题。
我想遍历一个对象,例如构造一个数组。另见我的问题:
如果我使用 d3.js 读取 csv 文件,我将获得一个对象数组。我想从中构建一个数组数组,所以我使用了一个 for (key in obj) 语句。我是否必须对每个对象进行 属性 检查以确保正确的顺序(任意顺序的一种解释),或者我是否可以假设属性将以相同的顺序拾取(第二种解释:只是顺序是任意的 -但稳定)。似乎很多例子都假设了后一种解释。 有人可以澄清一下吗?
您不应期望 for..in
语句以任何特定顺序遍历您的对象属性,即使是在具有相同属性的对象的迭代中也是如此。您可以采取不同的方法来确保正确的顺序,这是我经常使用的方法:
// this is the order I want the values in
var order = ['id', 'first', 'last'];
var collection = [{ first: 'Jane', last: 'Doe', id: 1}, {last: 'Smith', id: 2, first: 'John'}];
var outputArray = [];
collection.forEach(function(row){
var tmpRow = [];
for(var attr in row){
// get the target index of the current attribute
var index = order.indexOf(attr);
// insert into desired position
tmpRow[index] = row[attr];
}
outputArray.push(tmpRow);
})
console.log(outputArray)
希望对您有所帮助。