2013-04-22 83 views
0

我見過類似的問題,但沒有什麼與我正在嘗試的完全匹配。我建立一個產品的「嚮導」,其中用戶回答問題,並解答當前存儲在一個數組,像這樣:在xml中使用javascript匹配數組與數組的內容

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> 

基於陣列上方應符合第2行,在這一點上,我想在訪問產品編號節點的內容。數據集不是很大(最多5個問題),但可能性的數量可以在那裏得到。這也必須在ipad的內存限制內運行。如果有幫助,我使用jQuery Mobile作爲框架。

感謝advanace!

回答

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); 
    } 
} 

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

如果您需要更多詳細信息,或者想要進行一些修改請求讓我知道。希望這有助於

+0

我可能應該解釋說原始數據來自Excel(業務決策),因此我正在導出CSV並進行轉換。它可以是xml,json或其他適合的東西。訣竅是創建一個CSV,然後可以將其轉換爲您建議的格式。 – rustbucket 2013-04-22 19:25:20

+0

你的例子工作。我意識到我以錯誤的方式看待這個問題,首先創建一個好的JSON文件,然後將其轉換回CSV。再次感謝! – rustbucket 2013-04-23 13:18:23

+0

很高興我能幫到你 – 2013-04-23 13:42:56