91

我有这个对象:

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

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

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

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

4

6 回答 6

106

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

for(key in data) {
    if(data.hasOwnProperty(key)) {
        var value = data[key];
        //do something with value;
    }
}
于 2013-07-14T01:58:32.853 回答
73

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

Object.values(data)

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

在 ES2015 中你可以使用这个:

Object.keys(data).map(k => data[k])
于 2016-07-01T21:10:10.530 回答
49

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

Object.keys(a).map(function(key){return a[key]})
于 2014-09-11T21:46:17.870 回答
14

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

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"]
于 2015-08-18T09:53:40.713 回答
5

很抱歉,您的结论性问题不是那么清楚,但您从一开始就错了。变量数据是一个对象而不是一个数组

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

alert(data.second);

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

谢谢 !

于 2013-07-14T02:11:45.787 回答
3

使用lodash _.values(object)

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

[ 1, 'abcd' ]

lodash包括一大堆其他函数,用于处理数组、对象、集合、字符串等,这些函数是您希望内置到 JavaScript 中的(实际上似乎正在慢慢进入该语言)。

于 2016-10-28T00:16:34.907 回答