是否有一种优雅的方法来访问对象的第一个属性。。。
你不知道你的财产的名字而不使用像..这样的循环。。in或jQuery的$.each
例如,我需要在不知道foo1名称的情况下访问foo1对象:
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
是否有一种优雅的方法来访问对象的第一个属性。。。
你不知道你的财产的名字而不使用像..这样的循环。。in或jQuery的$.each
例如,我需要在不知道foo1名称的情况下访问foo1对象:
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
当前回答
顶部答案可以生成整个数组,然后从列表中捕获。这是另一个有效的捷径
var obj = { first: 'someVal' };
Object.entries(obj)[0][1] // someVal
其他回答
这是我的解决方案
const dataToSend = {email:'king@gmail.com',password:'12345'};
const formData = new FormData();
for (let i = 0; i < Object.keys(dataToSend).length; i++) {
formData.append(Object.keys(dataToSend)[i],
Object.values(dataToSend)[i]);
}
console.log(formData);
正如其他人指出的那样,如果财产的顺序很重要,那么将它们存储在对象中并不是一个好主意。相反,您应该通过方括号使用数组。例如。,
var example = [ {/* stuff1 */}, { /* stuff2 */}, { /* stuff3 */}];
var first = example[0];
请注意,您会丢失“foo”标识符。但您可以向包含的对象添加名称属性:
var example = [
{name: 'foo1', /* stuff1 */},
{name: 'foo2', /* stuff2 */},
{name: 'foo3', /* stuff3 */}
];
var whatWasFirst = example[0].name;
对于那些寻求类似问题答案的人,即:“我如何找到一个或多个匹配特定模式的财产?”,我建议使用Object.keys()。要扩展benekastah的答案:
for (const propName of Object.keys(example)) {
if (propName.startsWith('foo')) {
console.log(`Found propName ${propName} with value ${example[propName]}`);
break;
}
}
单行版本:
var val = example[function() { for (var k in example) return k }()];
我们也可以采用这种方法。
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
Object.entries(example)[0][1];
顶部答案可以生成整个数组,然后从列表中捕获。这是另一个有效的捷径
var obj = { first: 'someVal' };
Object.entries(obj)[0][1] // someVal