【问题标题】:indexOf returns -1, why?indexOf 返回 -1,为什么?
【发布时间】:2015-09-22 17:11:16
【问题描述】:

我正在尝试使用模块 xml2js 将一些 XML 转换为 JSON,我才刚刚开始

    request.execute('[someSP].[spSomeSP]', function(err, dataset) {
      _.forEach(dataset, function(items) {
        _.forEach(items, function(item) {
          console.log('>>>>', item);
        });
      });

console.log('>>>>', item); 返回的位置:

{ BET: 57635034,
  CUSTOMER: 181645,
  SPORT: 'NFL',
  XX_FILL_OPEN: '<element>\r\n\t<element_type>wager_action_button</element_type>\t\r\n\t<element_name>Fill Open</element_name>\r\n\t<element_call>fillOpen(57635034)</element_call>\r\n\t<element_content></element_content>\r\n</element>',
  XX_VIEW: '<element>\r\n\t<element_type>betslip_selection_checkbox</element_type>\t\r\n\t<element_name></element_name>\r\n\t<element_call>addRemoveSelectionFromSlip_checkbox(1738756,0,1,1)</element_call>\r\n\t<element_content>0</element_content>\r\n</element>',
  XX_CANCEL: null }

正如您在上面看到的,有一些以XX 开头的道具,每个以XX 开头的道具都带有一个XML 属性,我所需要的只是将每个XML 属性转换为JSON,但是当我做item.indexOf('XX') 我得到的只是-1

那么,为了将每个以 XX 开头的道具转换为 JSON,我应该怎么做?

【问题讨论】:

  • 您应该在item.indexOf(即indexOf is not a function)上收到错误消息。常规对象没有indexOf 方法,数组和类似类型有
  • 或者你的输出显示的是一个完整的字符串?
  • @PatrickEvans 我收到的只是您在上面看到的对象。以 XX 开头的所有内容都应该是 JSON 而不是 XML。

标签: javascript json xml node.js


【解决方案1】:

item 是一个对象。您可以将其转换为 JSON,然后检查 XX:

var json = JSON.stringify(item);
console.log(json.indexOf('XX')); // 49

或者,一种更好的方法,您可以遍历对象的每个属性:

for(var key in item) {
    if(key.indexOf('XX') === 0) {
        console.log(key);
        console.log(item[key]);
    }
    // Or you can also check the value here...
    // item[key].indexOf('XX')
}

【讨论】:

  • 所以它也会匹配 SPORT: 'XX-NFL' 的记录,对吧?
  • 可能是=== 0,因为OP提到了“开始于”,否则会匹配nflXXabc-XX-123
  • 我正在尝试将 for 循环转换为 lodash forEach,但出现错误,可能我的操作方式不正确。
  • 还有,这个:console.log(item[key].indexOf('XX')); 抛出一个错误:TypeError: Cannot read property 'indexOf' of null
  • 其实item是一个对象,你不能使用indexOf或者forEach,你需要一个数组。
猜你喜欢
  • 2012-01-25
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多