【问题标题】:Get values from an object in JavaScript [duplicate]从JavaScript中的对象获取值[重复]
【发布时间】:2023-03-12 06:22:01
【问题描述】:

我有这个对象:

var data = {"id": 1, "second": "abcd"};

这些是来自表单的值。我将其传递给函数进行验证。

如果上述属性存在,我们可以通过data["id"]data["second"] 获取它们的值,但有时,根据其他值,属性可能会有所不同。

如何从 data 获取独立于属性名称的值?

【问题讨论】:

  • 这是一个Object,而不是一个Array
  • 首先,这不是一个数组。其次,您所说的“索引”通常称为属性名称或键。除了属性之外,没有办法获得价值。虽然任何表达式都可以放在[] 中,但它的返回值将用作属性名称。
  • 对不起........

标签: javascript function object


【解决方案1】:

要在不知道这些属性名称的情况下访问对象的属性,您可以使用for ... in 循环:

for(key in data) {
    if(data.hasOwnProperty(key)) {
        var value = data[key];
        //do something with value;
    }
}

【讨论】:

  • 别忘了查看hasOwnProperty
  • @PaulS。谢谢提醒:)更新了答案
  • 离开.hasOwnProperty 结帐。让我们不要传播不必要的警卫的使用。这是不好的做法。
  • @CrazyTrain 让我在您有代码 xD 的页面上添加到 Object.prototype
  • @PaulS.:当然,你可以这样做......我会在你有代码的页面上删除Object.prototype.hasOwnProperty。 :D 对此类事情的唯一真正防范是对清洁环境有严格的要求。
【解决方案2】:

在 ES2017 中你可以使用Object.values():

Object.values(data)

在撰写本文时支持有限(FireFox 和 Chrome)。除 IE 之外的所有主流浏览器现在都支持此功能。

在 ES2015 中你可以使用这个:

Object.keys(data).map(k => data[k])

【讨论】:

    【解决方案3】:

    如果您想在一行中执行此操作,请尝试:

    Object.keys(a).map(function(key){return a[key]})
    

    【讨论】:

    • 指出 Object.keys() 是在 ECMA5 中引入的,IE9+ 支持。
    【解决方案4】:

    如果你定义了$,那么你可以迭代

    var data={"id" : 1, "second" : "abcd"};
    $.each(data, function() {
      var key = Object.keys(this)[0];
      var value = this[key];
      //do something with value;
    }); 
    

    如果您知道键的值,您可以通过以下方式访问它

    data.id
    

    data["id"]
    

    【讨论】:

      【解决方案5】:

      很抱歉,您的结论性问题不是那么清楚,但您从一开始就错了。变量 data 是 Object 而不是 Array

      访问对象的属性非常简单:

      alert(data.second);
      

      但是,如果这不能完全回答您的问题,请澄清并回复。

      谢谢!

      【讨论】:

      • 问题是在不知道键名的情况下,您的理由并不能证明所提问题的合理性
      【解决方案6】:

      使用lodash_.values(object)

      _.values({"id": 1, "second": "abcd"})
      
      [ 1, 'abcd' ]
      

      lodash 包含一大堆其他函数,可用于处理数组、对象、集合、字符串等,您希望将它们内置到 JavaScript 中(实际上似乎正在慢慢实现语言)。

      【讨论】:

      • 不应该使用lodash,它会增加ob bundle的大小
      猜你喜欢
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2014-09-03
      相关资源
      最近更新 更多