将数组列表存储在变量

时间:2018-12-03 11:44:32

标签: javascript arrays variables

我试图将数组列表存储在变量中,但是不知道如何解决。

xpath将返回一个项目列表,并且可以很好地显示在控制台中。我的问题是我不知道如何将其存储在变量中以供以后使用列表。

如果我尝试使用“ arrayList”,它将仅返回数组中的最后一项,但在控制台中它将显示所有项。

有什么想法吗?

var iterator = document.evaluate('xpathgoeshere', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

try {
  var thisNode = iterator.iterateNext();

  while (thisNode) {
    var arrayList = (thisNode.textContent);
    var thisNode = iterator.iterateNext();
    for (var i = 0; i < arrayList.length; i++) {
      console.log(arrayList);
    }
  }
} catch (e) {
  dump('Error: Document tree modified during iteration ' + e);
}

2 个答案:

答案 0 :(得分:1)

首先,您应该在循环后更新thisNode,因为arrayList面向thisNode

下一个问题可能是,您在while循环内将iterator.iterateNext();设置为新的var thisNode,而不是在try块内更新var thisNode。 (因为它前面的var

尝试一下::)

var iterator = document.evaluate('xpathgoeshere', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

try {
  var thisNode = iterator.iterateNext();

  while (thisNode) {
    var arrayList = thisNode.textContent;

    for (var i = 0; i < arrayList.length; i++) {
      console.log(arrayList[i]);
    }    
    thisNode = iterator.iterateNext();
  }
} catch (e) {
  dump('Error: Document tree modified during iteration ' + e);
}

正如史蒂文所说,thisNode.textContent是一个字符串。我不知道您的刺痛是什么样子,但是也许您首先必须split(),或者如果它是一个JSONstring,则必须使用JSON.parse()才能获得阵列。


但是,如果您的thisNode.textContext应该是数组中的项目,请尝试以下操作:

var iterator = document.evaluate('xpathgoeshere', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

try {
  var thisNode = iterator.iterateNext();
  var arrayList = [];

  while (thisNode) {
    arrayList.push(thisNode.textContent); 
    thisNode = iterator.iterateNext();
  }

  console.log(arrayList);

  for (var i = 0; i < arrayList.length; i++) {
    console.log(arrayList[i]);
  }   
} catch (e) {
  dump('Error: Document tree modified during iteration ' + e);
}

答案 1 :(得分:1)

将节点添加到阵列中。

var iterator = document.evaluate('//div', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

const items = []

try {
  var thisNode = iterator.iterateNext();
  while (thisNode) {
    items.push(thisNode)
    var thisNode = iterator.iterateNext();
  }
} catch (e) {
  dump('Error: Document tree modified during iteration ' + e);
}

console.log(items);
<div>
  <div>Item 1</div>
  <div>Item 2</div>
</div>