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

这里有一个解决方案,我意识到你可以在很多不同的方式解决这个问题,我的不一定是最好的办法。

祝你好运。

相关问题