繁体   English   中英

添加更多键值对到 object javascript

[英]adding more key value pair to an object javascript

我有一个接受 2 个值的方法

getCreateRequest = function (field, required) {
  return {
    additionalFields: [
      {
        field: field,
        required: required
      }
    ]
  };
};

我需要将以下值传递给此方法

{ field: "PHONE", required: true },
{ field: "COUNTRY", required: true },
{ field: "MOBILE", required: true }

我写的方法如下:

 let request = getCreateRequest ("PHONE", true);
 request.push("COMPANY", true);

但它无法将更多内容推送到请求中并抛出此错误->request.push 不是 function 不确定如何以正确的方式执行此操作

如果你希望你的请求是一个数组,那么这样做:

getCreateRequest = function (field, required) {
  return [
    {
      field: field,
      required: required,
    },
  ];
};

let request = getCreateRequest("PHONE", true);
request.push({ field: "MOBILE", required: true });

console.log(request);
getCreateRequest = function (field, required) {
  return {
    additionalFields: [
      {
        field: field,
        required: required
      }
    ]
  };
};

您的getCreteRequest function 正在返回 Object。因此,如果您想修复它。 你可以:

request['additionalFields'].push({ field: "MOBILE", required: true });

这似乎可以在不使用任何用户定义函数的情况下完成,如下所示。

 const data = { additionalFields:[] }; data.additionalFields.push(...[ { field: "PHONE", required: true }, { field: "COUNTRY", required: true }, { field: "MOBILE", required: true } ]); console.log( data );

一个 Class

但是,如果您需要定义自己的方法,例如下面的Fields#addFields() ,您可以定义一个addFields我可以将方法命名为 addFields,而不是将其命名为push ,但我选择不这样做。 而且,您this链接调用 - 只要返回即可。

 class Fields { constructor(field, required) { this.data = {additionalFields: [{field, required}]}; return this; } get fields() { return this.data; } addFields(field, required) { this.data.additionalFields.push({field, required}); return this; } } const fields = new Fields("HOME", true); console.log( fields.fields ); fields.addFields("MOBILE", false); console.log( fields.fields ); fields.addFields("EMAIL", true).addFields("BEEPER", false).addFields("DAD", true); console.log( fields.fields );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM