0

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

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 作为框架。

提前致谢!

4

1 回答 1

0

如果您说可以将格式修改为您喜欢的任何格式,为什么要使用 2 种不同的格式(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);   
    }
}

演示:http: //jsfiddle.net/wwLuM/

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

于 2013-04-22T15:11:49.430 回答