我见过类似的问题,但没有什么能与我正在尝试做的完全匹配。我正在构建一个产品“向导”,用户可以回答问题,答案当前存储在一个数组中,如下所示:
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作为框架。
先谢谢!
答案 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/
如果您需要更多详细信息,或想要进行一些修改,请告诉我们。希望这有帮助