【问题标题】:How can I extract the value of an object from an array of objects array using javascript如何使用javascript从对象数组中提取对象的值
【发布时间】:2023-03-08 08:33:01
【问题描述】:

我有一个如下结构的对象数组,我想使用 javascript 或 jquery 来提取 serviceProviderContact 字段中的电子邮件,例如 mike@comapny .co.za。目前我正在使用 providerName 字段来填充下拉列表,但我也想提取电子邮件。

providers: Array(4)
0: {providerId: 1, countryId: 1, providerName: "Vodacom", serviceProviderContact: "support@company.co.za"}
1: {providerId: 2, countryId: 1, providerName: "MTN", serviceProviderContact: "john@company.co.za"}
2: {providerId: 3, countryId: 1, providerName: "Cell C", serviceProviderContact: "mike@company.co.za"}
3: {providerId: 4, countryId: 1, providerName: "Telkom Mobile", serviceProviderContact: "Aplh@company.co.za"}

【问题讨论】:

  • 所以你知道如何获取providerName,但你问的是如何获取serviceProviderContact?你能提供一个minimal reproducible example 来说明问题到底是什么吗?
  • 您似乎想获取所选下拉选项的数组索引。 <select> 元素有一个名为 .selectedIndex 的属性,它恰好包含该属性。
  • 这是一种方法:jsfiddle.net/khrismuc/mv45o79q
  • 你可以查看我的答案

标签: javascript arrays object collections


【解决方案1】:

像这样简单地使用map

var emails = providers.map(e => e.serviceProviderContact);

演示:

 

var providers = [{providerId: 1, countryId: 1, providerName: "Vodacom", serviceProviderContact: "support@company.co.za"},
{providerId: 2, countryId: 1, providerName: "MTN", serviceProviderContact: "john@company.co.za"}
{providerId: 3, countryId: 1, providerName: "Cell C", serviceProviderContact: "mike@company.co.za"},
{providerId: 4, countryId: 1, providerName: "Telkom Mobile", serviceProviderContact: "Aplh@company.co.za"}];

var emails = providers.map(e => e.serviceProviderContact);

console.log(emails);

【讨论】:

  • 选择提供商名称后,我想获取关联的电子邮件,然后放置一个警报框来显示电子邮件
  • @FlyBYNight 这是非常相关的信息,您应该添加到您的问题中。理想情况下,以堆栈 sn-p 的形式显示您自己解决此问题的尝试。
【解决方案2】:

您可以使用地图打印电子邮件 ID。您必须在每个对象之后加上, 以使其成为有效对象。 Object.values 用于提取数组中对象中存在的所有值

var providers = [{
    0: {
      providerId: 1,
      countryId: 1,
      providerName: "Vodacom",
      serviceProviderContact: "support@company.co.za"
    },
    1: {
      providerId: 2,
      countryId: 1,
      providerName: "MTN",
      serviceProviderContact: "john@company.co.za"
    },
    2: {
      providerId: 3,
      countryId: 1,
      providerName: "Cell C",
      serviceProviderContact: "mike@company.co.za"
    },
    3: {
      providerId: 4,
      countryId: 1,
      providerName: "Telkom Mobile",
      serviceProviderContact: "Aplh@company.co.za"
    }
  }]
  
  window.onload=function()
  {
      var k;
      var v;
  Object.values(providers[0]).forEach(e=>{
  k=document.createElement('option');
  v=document.createTextNode(e.providerName);
  k.appendChild(v)
  document.getElementById('a').appendChild(k)})
  }
  
  
  function a(name)
  {
  var x=Object.values(providers[0]).filter((e) => e.providerName==name)
  alert(x[0].serviceProviderContact)
  }
<select id="a" onchange='a(this.value)'>
</select>

【讨论】:

  • OP 显示的是控制台输出,而不是源代码。无论如何,事实证明这并不能回答实际问题。 OP 不只是在寻找 .map()(请参阅他们在其他答案下方的评论)
  • 对,但 OP 正在填充一个下拉列表(我假设 &lt;select&gt;)并希望根据用户的选择显示电子邮件。
猜你喜欢
  • 1970-01-01
  • 2020-06-08
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
相关资源
最近更新 更多