【问题标题】:Getting the value of an object's property where the key is a blank string获取键为空字符串的对象属性的值
【发布时间】:2012-11-30 16:34:38
【问题描述】:

给定这个对象:

: http://www.w3.org/2005/Atom
gd: http://schemas.google.com/g/2005 
openSearch: http://a9.com/-/spec/opensearch/1.1/ 
app: http://www.w3.org/2007/app; 
media: http://search.yahoo.com/mrss/

如何获取第一个属性的值?我怀疑这是一个简单的过程,但我正在画一个空白。提前致谢。

对象是这样构建的:

服务器端(php):

$namespaces = $feedXML->getNamespaces(true);
$arr = array(
'Status' => 'Success',
'Message' => 'Feed fetched.',
'Namespaces' => $namespaces,
'Feed XML' => $feedXML
);
echo json_encode($arr);

客户端(JS):

   var output = '';
    for (property in dataj["Namespaces"]) {
        output += property + ': ' + dataj["Namespaces"][property] + '; ';
    }
    alert(output);

我希望能够检查命名空间,看看这是 Atom 还是 RDF。

听起来只是迭代每个属性将是最好的方法。

【问题讨论】:

  • 该代码真的有效吗?因为我得到的只是Uncaught SyntaxError: Unexpected token :
  • 确切的代码是什么?您的对象是如何构建的?
  • 这是无效的 JavaScript 对象。而且我确信 api 会发送正确编码的 JSON 对象(例如{"xmlns": "http://www.w3.org/2005/Atom", "xmlns$gd": "http://schemas.google.com/g/2005"})。
  • @SalmanA 我不知道你在说什么 api
  • 您能否发布(相关部分)由您的 PHP 脚本生成的 JSON?

标签: javascript properties javascript-objects


【解决方案1】:

如果你想获取键为空字符串的属性的值,那么你可以这样做

var value = myObject[''];

如果您尝试获取对象的“第一个属性”,则不能,因为 javascript 对象中的属性没有排序。

【讨论】:

  • 这是名称空间 XML 名称空间的 JSON 对象。你是说我应该把这个对象解码回一个数组吗?这甚至可以使用空白键吗?
  • 这是正确的,但是您可以遍历对象的属性以获取值。
  • 不知道你可以这样引用一个空字符串键。谢谢。
【解决方案2】:

不保证对属性进行订购。但是,您可以遍历所有属性以找到正确的属性(如果您知道要查找的内容):

for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
        doSomethingWith(obj[prop]);
}

参考:Iterating over every property of an object in javascript using Prototype?

然后通过

获取密钥
var value = obj[key];

【讨论】:

【解决方案3】:

你可以试试这个代码:

var test_bject = {'test': 1, 'test2': 2, 'test3': 3}, first_value;

for (i in test) {
  first_value = test_object[i];
  break;
}

【讨论】:

  • 那行得通。我应该更好地表达我想要做的事情。
猜你喜欢
  • 2021-02-04
  • 2021-11-28
  • 2016-03-19
  • 2020-06-05
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
相关资源
最近更新 更多