2016-11-07 8 views
2

まず、特定のサイズの配列を作成しています。配列の特定の位置に値を挿入するjavascript

$("#bntSize").one('click', function(e){ 
      var memoria = $("#memoria").val(); 
      console.log(memoria) 

      html = ""; 

      for(var i = 0; i < memoria ; i++){ 
       html += "<div class='square' name='mem"+i+"' data-id='"+i+"' data-pos='"+i+"' >"+i+"</div>"; 
       arrayMemoria.push(''); 
      } 
      console.log(arrayMemoria) 
      $("#contenedor").html(html); 

     }); 

メモリアが7に等しい場合、私はこの取得しています:

["", "", "", "", "", "", ""] 

は今、私は配列にいくつかの値を与えている:

var nada = 0; 

function firstFit(){ 

      var cantidad = $("#ffinput").val(); 
      var value = $("#ffinput2").val(); 
      /*console.log(cantidad)*/ 

     if(nada == 0){ 
      for (nada ; nada < cantidad ; nada++) { 
       arrayMemoria.splice(nada , 1 , value); 
       nada = nada; 
      } 
     } 
     else{ 

      for (nada; nada < arrayMemoria.length ; nada++) { 
       arrayMemoria.splice(nada , 1 , value); 
       nada = nada; 
      } 
     } 

ここcantidad:どのように多くのスペースを私は配列で使用すると仮定しています& 値:ちょうど値。

だから私は置けば=> cantidad = 3、値=

["A", "A", "A", "", "", "", ""] 

その後、私は入れたい場合は=> cantidad = 2値= B

["A", "A", "A", "B", "B", "B", "B"] 

しかし、私がしようとしています

["A", "A", "A", "B", "B", "", ""] 

と私は=> cantidad = 1を入れて、値= C

0の場合:これを取得します
["A", "A", "A", "B", "B", "C", ""] 

そして、私の第二の問題

私はAに等しい値を削除しないと私は私がこれを取得すると仮定しています=> cantidad = 2、VALUE = D を挿入していた場合:

["D", "D", "", "B", "B", "C", ""] 

私の配列の利用可能なスペースを数えるには?私は

cantidad = 1、値= Eを挿入したい場合は、原因、私は誰かが私を助けてくださいすることができた場合は最初の使用可能なスペースに

["D", "D", "E", "B", "B", "C", ""] 

を取得する必要があります!

答えて

1

は、次のコード

\t var arr = ["", "", "", "", "", "", ""]; 
 
    arr = insertValue(3, "A", arr); 
 
    console.log(arr); 
 
    arr = insertValue(2, "B", arr); 
 
    console.log(arr); 
 
    arr = insertValue(1, "C", arr); 
 
    console.log(arr) 
 
    arr = removeValue("A", arr); 
 
    console.log(arr) 
 
    arr = insertValue(2, "D", arr); 
 
    console.log(arr) 
 
    
 
    
 
\t function insertValue(cantidad, value, arr){ 
 
\t \t var arrLength = arr.length; 
 
\t \t var count = 0; 
 
\t \t for (var i = 0; i < arrLength; i++) { 
 
\t \t \t if(arr[i] == "" && count < cantidad){ 
 
\t \t \t \t arr[i] = value; 
 
\t \t \t \t count ++; 
 
\t \t \t } 
 
\t \t }; 
 
     return arr; 
 
\t } 
 

 
\t function removeValue(value, arr){ 
 
\t \t var arrLength = arr.length; 
 
\t \t for (var i = 0; i < arrLength; i++) { 
 
\t \t \t if(arr[i] == value){ 
 
\t \t \t \t arr[i] = ""; 
 
\t \t \t } 
 
\t \t }; 
 
     return arr; 
 
\t }
を試すことができます

EDIT:は、配列内のスペースの数を取得するには

var arr = ["A", "A", " " , " ", " " , "B" ,"C " , " "]; 
 
var spaceCount = 0; 
 

 
arr.forEach(function(i) { if(i == " ") spaceCount++; }); 
 
console.log(spaceCount)

EDIT 2:が連続空間カウントが開始位置+取得する:アレイ

var arr = ["A", "A", " " , " ", " " , "B"," ", " " ,"C " , " "]; 
 
var count = 1; 
 
var countArr = []; 
 

 
for (var i = 0; i < arr.length; i++) { 
 
\t if(arr[i] == " "){ 
 
\t \t if(arr[i+1] == arr[i]){ 
 
\t \t \t count ++; 
 
\t \t }else { 
 
\t \t \t countArr.push(count); 
 
\t \t \t count = 1; 
 
\t \t } 
 
\t } 
 
}; 
 

 
console.log(countArr)

EDIT 3で連続したスペースをカウントします

ここで

var arr = [" ", "A", "A", " " , " ", " " , "B"," ", " " ,"C " , " "]; 
 
var count = 1; 
 
var countArr = []; 
 

 
var pos = 0; 
 

 
for (var i = 0; i < arr.length; i++) { 
 
\t if(arr[i] == " "){ 
 
\t \t if(arr[i] === arr[i+1]){ 
 
\t \t \t count ++; 
 
\t \t }else { 
 
\t \t \t countArr.push({'pos': pos, 'count': count}); 
 
\t \t \t count = 1; 
 
\t \t } 
 
\t }else{ 
 
\t \t pos = i+1; 
 
\t } 
 
}; 
 

 
console.log(countArr)

+0

もう1つ問題がありますか? cantidad = 1と期待される結果を挿入したい場合はどうすればいいですか?この配列を '' "A"、 "A"、 ""、 "B"、 ""、 " cantidad = 3 '[" A "、" A "、" A "、" A "、" B "、" C " "、" D "、" D "、" D "、" B "、" C "、"] '、どのように正確に何個の空白が配列内にあるかを数え、スペースが大きいカンチダッド – Eliott

+0

@Eliott私は自分の答えを更新しました – Monasha

+0

連続したスペースを数える方法はありますか?つまり、最初の3つのスペースを数える: 'count = 3'そして最後のスペースの 'count = 1'なので、最後のスペースに値を挿入する必要があることがわかります。 – Eliott

0

EDIT:これは両方の質問に対して有効な解決策です。

var array = ["","","","","","",""]; 
 

 
function addValues(num, value) { 
 
    for(var i=0; i<num; i++) { 
 
     for(var j=0; j<array.length; j++){ 
 
      if(array[j] ==="") { 
 
       array[j] = value; 
 
       break; 
 
      } 
 
     } 
 
    } 
 
} 
 

 
function removeValues(value) { 
 
    for(var i=0; i<array.length; i++) { 
 
     if(array.indexOf(value) !== -1) { 
 
      array[i] = ""; 
 
     } 
 
    } 
 

 
} 
 
addValues(3, 'A'); 
 
addValues(2, 'B'); 
 
addValues(1, 'C'); 
 

 
removeValues('A'); 
 

 
addValues(2, 'D'); 
 
addValues(2, 'E'); 
 

 
console.log(array);

1

var array = ["A", "", "", "", "B", "B", "B"]; 
 

 
    var cantidad = 2; 
 
    for (var x = 0; x < array.length; x++) { 
 
    if (array[x] === "") { 
 
     if (cantidad >0){ 
 
     array.splice(x, 1, "C"); 
 
     cantidad--; 
 
     } 
 
    } 
 
    } 
 

 
    function codeAddress() { 
 
    alert(array); 
 
    } 
 

 
    window.onload = codeAddress;

が解決策だ、私はあなたがさまざまな方法の多くでは、この問題を解決することができます実現し、鉱山は必ずしも最善のアプローチではありません。

幸運。

関連する問題