从JavaScript中的对象获取值

Har*_*nan 60 javascript function object

我有这个对象:

var data = {"id": 1, "second": "abcd"};
Run Code Online (Sandbox Code Playgroud)

这些是表格中的值.我将此传递给函数进行验证.

如果存在上述属性,我们可以使用data["id"]和获取它们的值data["second"],但有时,基于其他值,属性可以不同.

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

cfs*_*cfs 76

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

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

  • @PaulS.:当然,你可以这样做......我会在你有代码的页面上删除`Object.prototype.hasOwnProperty`.:D对这种事情唯一真正的防范是严格要求清洁环境. (5认同)
  • 保留`.hasOwnProperty`签出.让我们不要分散使用不必要的警卫.这是不好的做法. (4认同)
  • 别忘了检查`hasOwnProperty` (3认同)
  • @CrazyTrain 让我在有代码的页面上添加到 `Object.prototype` xD (2认同)

Ere*_*evi 45

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

Object.keys(a).map(function(key){return a[key]})
Run Code Online (Sandbox Code Playgroud)

  • 可能有用的是指出在IEMA +支持的ECMA5中引入了Object.keys(). (6认同)

tri*_*cot 36

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

Object.values(data)
Run Code Online (Sandbox Code Playgroud)

在撰写本文时,支持是有限的(FireFox和Chrome).除了IE之外的所有主流浏览器现在支持此

在ES2015中,您可以使用:

Object.keys(data).map(k => data[k])
Run Code Online (Sandbox Code Playgroud)


use*_*220 11

如果您$已定义,则可以迭代

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

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

data.id
Run Code Online (Sandbox Code Playgroud)

要么

data["id"]
Run Code Online (Sandbox Code Playgroud)


Coo*_*hal 5

对不起,你的结论性问题不是很明确,但从第一行开始你就错了.变量数据是Object而不是Array

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

alert(data.second);
Run Code Online (Sandbox Code Playgroud)

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

谢谢 !

  • 问题是在不知道密钥名称的情况下,您的理由并不能证明所问问题的合理性 (2认同)