使用javascript将数组的内容与xml中的数组匹配

时间:2013-04-22 14:57:41

标签: javascript arrays json

我见过类似的问题,但没有什么能与我正在尝试做的完全匹配。我正在构建一个产品“向导”,用户可以回答问题,答案当前存储在一个数组中,如下所示:

userAnswers = ['abc',xyz',gtd'];

我想要匹配的XML看起来像这样。 (注意:我可以将此更改为json或更改格式,如果有更有效的方式来执行此操作)

  <row>
    <answer1>abc</answer1>
    <answer2>xyz</answer2>
    <answer3>mta</answer3>
    <product numbers>productID, productID2, productID3</product numbers>
  </row>

<row>
        <answer1>abc</answer1>
        <answer2>xyz</answer2>
        <answer3>gtd</answer3>
        <product numbers>productID, productID2, productID3</product numbers>
</row>

基于上面的数组,它应匹配第二行,此时我想访问产品号节点的内容。数据集并不大(最多5个问题),但可能性的数量可以达到。这也必须在ipad的内存限制内起作用。如果它有助于我使用jquery mobile作为框架。

先谢谢!

1 个答案:

答案 0 :(得分:0)

为什么有两种不同的格式(xml,json),如果你说你可以将格式修改为你喜欢的格式?

如果我是你,我会做以下事情:

首先将xml转换为简单的json,如下所示:

var answers = [
    {
        answers: ['abc', 'xyz', 'mta'],
        products: [1, 2, 3]
    },
    {
        answers: ['abc', 'xyz', 'gtd'],
        products: [4, 5, 6]        
    }
];

然后:

var match = function(array1, array2){
    if (array1.length != array2.length)
        return false;

    for (var i = 0; i < array1.length; i++){
        if (array1[i] !== array2[i]){
             return false;   
        }
    }
    return true;
};

for (var i = 0; i < answers.length; i++){

    if (match(answers[i].answers, userAnswers)){
       console.log(answers[i].products);   
    }
}

DEMO:http://jsfiddle.net/wwLuM/

如果您需要更多详细信息,或想要进行一些修改,请告诉我们。希望这有帮助

相关问题