2016-11-07 42 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); 

     }); 

如果MEMORIA等於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", "A", "", "", "", ""] 

然後,如果我想把=> cantidad = 2和值= B

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

但我想得到這個:

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

和,如果我把=> cantidad = 1和值= C

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

我的第二個問題

如果我刪除相當於一個價值觀和我插入=> 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 }

編輯:要獲得數組中的空格數

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

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

編輯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計數連續的空格:爲了獲得連續的空間COUNT +開始位置

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

你能幫我解決另一個問題嗎?如果我有這個數組''「A」,「A」,「」,「」,「B」,「」,「」,「」]',我想插入cantidad = 1,並且期望的結果將會是'[「A」,「A」,「」,「」,「」,「B」,「C」,「」]',如果我想插入cantidad = 3'[「A」,「A 「,」D「,」D「,」D「,」B「,」C「,」「]'',我怎麼能夠精確地計算出陣列中有多少空白區域,並將該值放在最佳位置空間更大cantidad – Eliott

+0

@Eliott我已經更新了我的答案 – Monasha

+0

任何方式來計算連續空格?我的意思是:計數前3個空格:count = 3,然後count = 1,這樣我就知道我必須在最後一個空格中插入值。 – Eliott

0

編輯:這是兩個問題的工作解決方案。

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;

這裏有一個解決方案,我意識到你可以在很多不同的方式解決這個問題,我的不一定是最好的辦法。

祝你好運。