2014-07-06 24 views
0

我正在尋找將兩個數組連接在一起的方式。 我有兩個數組,並希望他們的元素是「組合」。在單獨的陣列中連接元素

所以,讓我們說我有一臺掃描儀。 它給了我array1中每個元素的值(如US $)。 如果每個元素的值小於或等於array2中的值,我希望它返回一些東西(比如一個字符串,「這個產品賣得便宜!」)。

我只想要它將數組中的一個項目鏈接到另一個相同位置

兩個陣列(上面提到的,簡述):

var array1 = [741, 451, 54188, 5847, 5418, 54944, 310, 541, 7451, 10211, 113, 9115, 62, 2841, 52482481, 24]; 
var array2 = [15, 418, 488, 130000, 8482, 55, 16, 14, 2546, 651, 4521, 11, 54, 659, 542, 1152]; 

所以,741將被連接到15,451到418,54188至488,等等

後它們被 「連接」,我將能夠看到array1中元素的值(按值,我的意思是我的掃描程序爲每個元素找到的)等於/小於array2中元素的值。

例如,將741放入我的掃描儀返回16. 這不小於15,所以不會返回任何東西。 - 然而,將451放入我的掃描儀將返回417.這是不到418,所以它會返回「這個產品賣廉價!」

我希望這是有道理的。

+0

'.indexOf()'? .. – zerkms

+0

@zerkms我是Javascript新手,並不太瞭解.indexOf()。你願意解釋嗎? – user3810560

+0

@ user3810560 - 我建議你熟悉[MDN - 鏈接到這裏](https://developer.mozilla.org/en-US/),你可以在其中查找任何javascript方法或任何javascript對象類型來查看哪些方法它有。 ['.indexOf()'](HTTPS://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)非常簡單並充分描述[there](https://developer.mozilla.org/en-US/docs/Web/JavaScript/參考/ Global_Objects /陣列/的indexOf)。如果您瞭解了很好的參考資源,那麼您應該能夠自己找到更多信息的答案。 – jfriend00

回答

0

這裏只是用.indexOf()查找第一陣列中的產品代碼,然後使用該索引查找比較價格第二陣列中一個簡單的解決方案:

Product Number: <input id="testVal" type="text" value="741"><br> 
Test Price: <input id="priceVal" type="text" value=15><br> 
<button id="go">Lookup</button><br><br> 
<div id="result"></div> 

document.getElementById("go").addEventListener("click", function() { 
    var prod = +document.getElementById("testVal").value; 
    var price = +document.getElementById("priceVal").value; 
    var result = lookupValue(prod, price); 
    document.getElementById("result").innerHTML = result; 
}); 


function lookupValue(prod, price) { 
    var productCodes = [741, 451, 54188, 5847, 5418, 54944, 310, 541, 7451, 10211, 113, 9115, 62, 2841, 52482481, 24]; 
    var prices = [15, 418, 488, 130000, 8482, 55, 16, 14, 2546, 651, 4521, 11, 54, 659, 542, 1152]; 

    var index; 
    if (!prod || !price) { 
     return "Please Enter a Product Number and Price"; 
    } 
    if ((index = productCodes.indexOf(prod)) >= 0) { 
     if (index < prices.length && price < prices[index]) { 
      return "This product is selling for cheap!"; 
     } else { 
      return "This product is not a bargain."; 
     } 
    } else { 
     return "Product not found for comparison"; 
    } 
} 

工作演示:http://jsfiddle.net/jfriend00/4S64t/


有了這麼多的產品代碼,真的只用.indexOf()沒有問題,找到第一個陣列中的比賽。但是,如果您有很多產品代碼,那麼將它們索引到對象中直接查找會更快。

1

我會改爲創建一個對象並將其放入單個數組中。

var my Obj = {no1:741, no2:15, text:'some text'} 

,它可以讓你建立,而不需要掃描陣列,因爲它已經存儲在「掃描」狀態

0

你可以使用JavaScript對象,它就像一本字典(或HashMap中)

var myObj = {}; 
array1.forEach(function(item, i) { 
    myObj[item] = array2[i]; 
}); 
alert(myObj[741]); 
>>> 15 

在這樣的佈置中,ARRAY1包含keys,和陣列2包含您的詞典的values