2017-06-04 46 views
1

例如,如果我的數組是是否有可能在一個數組的一個位置有多個字符串?

var cars = ["Saab", "Volvo", "BMW"]; 
var answer = cars[1]; 

和我創建了一個函數,其中,如果我輸入「沃爾沃」它說:「正確的」。是否有可能做這樣的事情:

var cars = ["Saab", "Volvo|volkswagen", "BMW"]; 

所以,當我輸入的是在位置1,就可以輸入:沃爾沃或大衆汽車公司和它會說「正確」? (但不是兩者)

+0

你能告訴你的函數的代碼,所以我們可以說哪裏去適應呢? – trincot

+0

但爲什麼你沒有使用對象在一個位置存儲多個值? –

+0

你需要這樣做的用例是什麼? – charlietfl

回答

0

拆分使用String#split方法(與分隔符|)將字符串並且使用Array#indexOf方法或Array#includes方法檢查值。

// split the string by `|` symbol 
var answer = cars[1].split('|'); 

// check value by checking index in array 
if(answer.indexOf(val) > -1){ 
    // do the rest here 
} 
0

您可以在|分割元素,並使用includes檢查值。

var cars = ["Saab", "Volvo|volkswagen", "BMW"]; 
 

 
function check(value, pos) { 
 
    return cars[pos].split('|').includes(value) 
 
} 
 

 
console.log(check('Volvo', 1)) 
 
console.log(check('volkswagen', 1)) 
 
console.log(check('Saab', 0))

2

,可以定義一個多維數組。

var cars = [["Saab"], ["Volvo", "volkswagen"], ["BMW"]]; 
if(cars[1].includes(val)){ 

} 
0

你可以使用,而不是爲快速查找(這includesindexOf不這樣做)的數組對象:

var cars = { 
    "Saab": 0, 
    "Volvo": 1, 
    "volkswagen": 1, 
    "BMW": 2 
}; 

你的檢查會在固定時間內運行:

if (cars[answer] === 1) // ... 
0

您可以創建一個散列對象:

var cars = ["Saab", "Volvo|volkswagen", "BMW"]; 
 

 
cars=cars.reduce(function(obj,el,i){ 
 
    obj[i]=el.split("|"); 
 
    return obj; 
 
},{}); 
 

 
console.log("cars is",cars); 
 

 
var guess=prompt("what is at 1?"); 
 

 
if(cars[1].includes(guess)){ 
 
    alert("right"); 
 
}else{ 
 
    alert("wrong"); 
 
}

所以現在汽車是這樣的:

cars[1]===["Volvo","volkswagen"]; 

所以,你可以檢查這個數組「在其大衆...

1

你可以有第一內部的第二陣列一個:

var cars = ["Saab", ["Volvo", "Volkswagen"], "BMW"]; 
0

您可以執行以下操作。

function check(array, position, value){ 
 
     var values = array[position].split('|'); 
 
     if(values.indexOf(value) >= 0) 
 
      alert("Right"); 
 
     else alert("wrong"); 
 
    } 
 
    var cars = ["Saab", "Volvo|volkswagen", "BMW"]; 
 
    value = prompt("What is the value at position 1 "); 
 
    check(cars, 1, value);

相關問題