javascript - js数组问题,前端大神进来看看
ringa_lee
ringa_lee 2017-04-11 11:06:57
[JavaScript讨论组]
    现在有个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   不知道有没有说明白。。  
     
ringa_lee
ringa_lee

ringa_lee

全部回复(6)
黄舟

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


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

ringa_lee
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 中元素无重复吧

如果有上面这个条件,可以用一个哈希表记录 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的数组?

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

怪我咯

不优雅的一段代码:

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;
}
迷茫

假设:你给出的数组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);

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号