【问题标题】:Insert values in specific position of array javascript在数组javascript的特定位置插入值
【发布时间】:2016-11-07 04:15:11
【问题描述】:

首先我要创建一个具有特定大小的数组。

$("#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 和 value = A

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

那么如果我想把 => cantidad = 2 和 value = B

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

但我想得到这个:

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

如果我把 => cantidad = 1 和 value = C

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

还有我的第二个问题

如果我确实删除了等于 A 的值并且我正在插入 => cantidad = 2 AND VALUE = D 我想得到这个:

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

如何计算数组中的可用空间?因为如果我想插入

cantidad = 1 和 value = E ,我需要获得第一个可用空间

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

如果有人可以帮助我!!

【问题讨论】:

    标签: javascript php jquery arrays


    【解决方案1】:

    你可以试试下面的代码

    	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)
        
        
    	function insertValue(cantidad, value, arr){
    		var arrLength = arr.length;
    		var count = 0;
    		for (var i = 0; i < arrLength; i++) {
    			if(arr[i] == "" && count < cantidad){
    				arr[i] = value;
    				count ++;
    			}
    		};
          return arr;
    	}
    
    	function removeValue(value, arr){
    		var arrLength = arr.length;
    		for (var i = 0; i < arrLength; i++) {
    			if(arr[i] == value){
    				arr[i] = "";
    			}
    		};
          return arr;
    	}

    编辑:获取数组中的空格数

    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++) {
    	if(arr[i] == " "){
    		if(arr[i+1] == arr[i]){
    			count ++;
    		}else {
    			countArr.push(count);
    			count = 1;
    		}
    	}
    };
    
    console.log(countArr)

    编辑 3: 获得连续空间计数 + 起始位置

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

    【讨论】:

    • 你能再帮我解决一个问题吗?如果我有这个数组 ["A", "A", " " , " ", "B", " " , " " , " "] 并且我想插入 cantidad = 1 会发生什么,预期结果将是 ["A", "A", " " , " ", " " , "B" ,"C " , " "] 如果我想插入 cantidad = 3 ["A", "A", "D" , "D ", "D", "B", " C", " "] ,我如何才能准确计算出有多少空白都在数组中,并将值放在最佳位置,以便为更大的候选人节省空间
    • 有什么方法可以计算连续空格?我的意思是:计算前3个空格:count = 3 ,然后count = 1作为最后一个空格,这样我就知道我必须在最后一个空格中插入值。
    • @Eliott 我已经为数组中的连续空格添加了代码
    【解决方案2】:

      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;

    这是一个解决方案,我意识到您可以通过很多不同的方式解决这个问题,我的方法不一定是最好的。

    祝你好运。

    【讨论】:

      【解决方案3】:

      编辑:这是两个问题的有效解决方案。

      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);

      【讨论】:

        猜你喜欢
        • 2020-07-07
        • 2023-01-15
        • 2012-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        相关资源
        最近更新 更多