2017-03-23 16 views
0

私は2つの配列(server_nameとserver_state)を持っています。 今、私は0,1,2,3がある場合、server_state配列をチェックしたいと思います。だから、可能な数字は今、私はそれは0,1,2または3である場合の数のPOSTITIONを保存し、その変数内の位置を保存したいJavaScriptの配列の位置

var server_state = [1, 0, 3, 2]; 
var server_name = [server1, server2, server3, server4]; 

のような0,1,2または3で何かあります私は配列server_nameに行くことができ、番号のような位置のservernameを取得します。これらの2つの情報(状態0,1,2,3とANDの2つの変数にサーバ名を保存する必要がありますので、後で使用できます) これについてのアイデアはありますか?配列がどのくらい知られている...

+0

正確に質問してください。 –

+0

'server_name'は文字列を含んでいますか?今の例のスコープにはない変数を格納しています。 –

+0

[ask]をお読みください。重要なフレーズ:「検索と研究」と「あなたがそれを自分で解決することを妨げた困難を説明する」 –

答えて

0

あなたがserver_stateでのみ可能数字は0-3であることを保証している場合は、あなたがこれを行うことができます:終わり

var positions = []; 
for (var i = 0; i < server_state.length; i++) { 
    positions[server_state[i]] = i; 
} 

を、配列が含まれています位置(つまり、3の位置はpositions[3]です。

0

sort()メソッドを使用できますserver_namesで検索し、server_state配列内のaとbの各インデックスをチェックしてその値でソートします。

var server_state = [1, 0, 3, 2]; 
 
var server_name = ['server1', 'server2', 'server3', 'server4']; 
 

 
var sorted = server_name.sort(function(a, b) { 
 
    return server_state[server_name.indexOf(a)] - server_state[server_name.indexOf(b)] 
 
}) 
 

 
console.log(sorted)

また、1つのオブジェクトを作成し、キーとして値とそのインデックスとしてserver_stateから各要素を追加し、そのオブジェクトの順序によって、新しい配列に追加することができます。

var server_state = [1, 0, 3, 2]; 
 
var server_name = ['server1', 'server2', 'server3', 'server4']; 
 

 
var obj = {}, result = [] 
 
server_state.forEach((e, i) => obj[i] = e) 
 
server_name.forEach((e, i) => result[obj[i]] = e) 
 

 
console.log(result)

0

あなたの質問は明らかではないが。ここに私がそれを理解した方法があります:

状態値が(0,1,2、または3)のサーバー名が好きです。

ここでは、すべてのサーバー名(server_name.map)を見て、サーバー名(サーバーの状態値が0,1,2、または3の場合)またはnullを返す新しい配列を作成します状態値が0と3の間でない場合。filter()を使用してnull値をフィルタリングできます。

const server_names_having_valid_state = server_name.map((name, idx) => [0,1,2,3].contains(server_state[idx]) ? name : null); 
const names_without_nulls = server_names_having_valid_state.filter(x => x !== null); 
関連する問題