首页 > js数组问题,前端大神进来看看

js数组问题,前端大神进来看看

    现在有个6个长度的数组a,里面元素是 1.2.3.4.5.6
     会得到一个数组  1.1.1.1.1.1
     
     如果是1.2.3.5.6
     会得到一个数组1.1.1.0.1.1
     
     如果是6
     会得到一个数组0.0.0.0.0.1
     
    或者有个7个长度的数组 里面会有1.2.3.4.5
    会得到一个数组 1.1.1.1.1.0.0
     
   
     a里面的元素长度不固定但是可以获取它的长度
     
   这个方法怎么写
   
   
   语文不太好不好意思重新整理如下:
   就是有一个数组现在只知道它的长度a(长度等于或者大于元素中最大的数),里面的元素有可能是1  也有可能是1.2.3  也有可能是1.3.6.8
   里面元素就是从1开始的自然数 
   根据这个去得到另一个数组
   元素为1的但是数组长度是8的话 那么他得到的另一个数组是1.0.0.0.0.0.0.0   就是他的2345678都没有就直接给它补0  
   比如1.3.6.8 它的长度是8的话  得到的另一个数组是1.0.1.0.0.1.0.1   不知道有没有说明白。。  
     

function arr2bin(arr) {
   let max = Math.max.apply(Math, arr.concat(arr.length).filter(item => item));
   return Array.from({length: max}, (val,key) => Number(arr.includes(key+1)));
}


let arr = [1,2,3,4,5];
arr.length = 7;
console.log( arr2bin(arr) );
console.log( arr2bin([1,2,3,4,5,6]) );
console.log( arr2bin([1,2,3,5,6]) );
console.log( arr2bin([6]) );

假设:你给出的数组a是从小到大排列且无重复。

var a = [1, 2, 3, 5, 6];

var results = Array.from({length: a[a.length - 1]}, (v, k) => 0);
a.forEach(item => results[item - 1] = 1);

大概是这样,手机写的没有测试。


不优雅的一段代码:

function wtf(arr, maxLength) {
    var result = [];
    for(var i = 1, j = 0;i <= maxLength; i++) {
        if (arr[j] !== i || j >= i) {
            result.push(0);
        } else if (arr[j] === i) {
            result.push(1);
            j++;
        }
    }
    return result;
}

写了段代码应该满足题主的要求了


https://jsfiddle.net/taoguo/kfqhf7un/


同学语文不好啊


这题要保证 a 中元素无重复吧

如果有上面这个条件,可以用一个哈希表记录 arr 中出现了什么元素。

https://jsfiddle.net/hsfzxjy/92qxer9z/

let a = [1,2,3,4,5,6];

function check(arr) {
  let map = {};
  arr.map((item) => map[item] = true);
  return a.map((item) => map[item] ? 1 : 0);
}

console.log(check([6]));

同志,你这个表述不怎么清晰啊,我来列下我看完后的疑问:

"现在有个6个数组" - 哪6个数组啊?

"如果是1.2.3.5.6,会得到一个数组1.1.1.0.1.1" - 两个数组长度不一样,是什么逻辑使得后面的数组长度是6的?

"如果是6,会得到一个数组0.0.0.0.0.1" - 这段更神,从一个字符串生成一个长度为6的数组,还是老问题,逻辑是什么?

"或者有个7个长度的数组 里面会有1.2.3.4.5" - 到底是7个长度不知道的数组?还是一个长度是7的数组?

这些问题基本导致回答起来比较难

【热门文章】
【热门文章】