indexOf返回-1,为什么?

时间:2015-09-22 17:11:17

标签: javascript json xml node.js

我正在尝试使用模块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,我应该怎么做?

1 个答案:

答案 0 :(得分: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')
}