是否有一种优雅的方法来访问对象的第一个属性。。。

你不知道你的财产的名字而不使用像..这样的循环。。in或jQuery的$.each

例如,我需要在不知道foo1名称的情况下访问foo1对象:

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

当前回答

这是我的解决方案

  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);

其他回答

尝试for…in循环,并在第一次迭代后中断:

for (var prop in object) {
    // object[prop]
    break;
}

否。MDN定义的对象文本是:

一个对象的零对或多对属性名和相关值的列表,用大括号({})括起来。

因此,对象文字不是数组,您只能使用其显式名称或使用in关键字的for循环访问财产。

我们也可以采用这种方法。

var example = {
  foo1: { /* stuff1 */},
  foo2: { /* stuff2 */},
  foo3: { /* stuff3 */}
}; 
Object.entries(example)[0][1];

您可以使用Object.values()访问对象的值:

var obj = { first: 'someVal' };
Object.values(obj)[0]; // someVal

这是一种更有效的方法,无需调用返回数组的Object.keys()或Object.values():

Object.prototype.firstKey = function () {
  for (const k in this) {
    if (Object.prototype.hasOwnProperty.call(this, k)) return k;
  }
  return null;
};

然后你可以像这样使用它:

const obj = {a: 1, b: 2, c: 3}
console.log(obj.firstKey()) //=> 'a'

这不一定会返回第一个键,请参见“for(…in…)”循环中的元素顺序