精华内容
下载资源
问答
  • 浅谈js数组中的length属性

    千次阅读 2020-08-13 10:14:38
    首先,我们都知道每个数组一个length属性 这个length属性一般我们用来循环遍历的约束,一般我们都会把他认为是该数组里面几个元素这个length就是多少-1(因为数组下标是从0开始的) 但实际上他并不是这个样子...

    首先,我们都知道每个数组都有一个length属性 这个length属性一般我们用来循环遍历的约束,一般我们都会把他认为是该数组里面有几个元素这个length就是多少-1(因为数组下标是从0开始的) 但实际上他并不是这个样子的 看下图:

      从上面那张图我们可以看到arr中的length居然是0  而二三行的代码也是执行有效的 是能够打印出来的 这又是为什么呢?

      带着这个问题 我们再来看以下一张图

      从上面那张图我们可以看到arr中的length居然又莫名其妙的变成了11 这整的是不是有点懵逼了???不要紧 我们来看一下arr整个数组打印出来究竟是个啥

      其实前面的empty * 10 就是[undefined,undefined......] 即arr[0] = undefined,arr[1] = undefined ......

      再绕回来,为什么数组的下标是11呢?

      其实是js中数组的length是根据数组的下标最大值来决定的,这个最大值只能是0到2的32次方这个范围内,如果不是这个范围内,js内部会先将这个下标进行隐式转换

      即arr["10"]= 10 等于arr[10] = 10 其实这句话会在数组里面创建11(因为数组下标是从0开始的)个项,没有值的项就用undefined来占位 所以这里的length 才是11

      那再看回来arr这个数组,为什么会存在a下标与b下标呢?

      其实在js中数组的下标是不能存在字符串的,但如果我们尝试着把字符串作为下标使用,其实js会把这个认为是属性来看待,就像我们的对象一样,以键值对的形式存在。

      当然,既然是被当做是属性,那么像push,pop这些添加和删除的方法也就对这些属性无效了

    展开全文
  • 数组的方法和属性

    千次阅读 2018-04-29 15:29:05
    public static void main(String[] args) 中有一个 String[] args 参数,该参数是一个字符串数组,在 java 命令行后面上参数 ,java 虚拟机就直接把它存放到了 main()方法的 String 数组里,该字符串数组是...

    数组的深入使用

    1、命令行参数

    public static void main(String[] args) 中有一个 String[] args 参数,该参数是一个字符串数组,在 java 命令行后面带上参数 ,java 虚拟机就直接把它存放到了 main()方法中的 String 数组里,该字符串数组是用来保存运行 main()函数时输入的参数,时 main()方法接受用户输入的参数列表,称为命令行参数

    如下代码:

    public class TestDemo19 {
        public static void main(String[] args) {
            for(int i=0;i<args.length;i++){
                System.out.println("第"+(i+1)+"个参数:"+args[i]);
            }
        }
    }
    

    需要先添加命令行参数运行才有结果,否则args.length = 0,不会进for语句打印的;
    1、使用终端添加命令行参数
    先编译,在运行,运行时添加参数

    格式:

    java 类名 参数1  参数2 ……参数n
    

    参数之间使用空格符隔开,可以有多个空格,但多余空格将被忽略,参数的下标从0开始,args[0]表示第一个参数,各个参数通过args数组传递给main()方法。
    在这里插入图片描述

    2、idea添加命令行参数
    先编译一次才可以;
    在这里插入图片描述
    在这里插入图片描述
    在点OK就可以了,然后运行:
    在这里插入图片描述

    2、数组操作类

    方法 描述
    binarySearch (int[] a,int key) 使用二分搜索法(数组首先要有序),查询key元素是否在数组a中,不存在返回负数
    copyOf (int[]original,int newlength) 复制指定数组。original表示源数组,newlength表示需要复制的长度
    equals (int[] a,int[] b) 比较两个数组是否相等,相等返回true,不相等返回false
    fill(int[] a,int val 填充数组
    sort(int[] a) 对指定的数组按升序排序
    toString(int[] a) 返回数组的字符串形式,即打印数组

    binarySearch (int[] a,int key)源代码:
    binarySearch (int[] a,int key)源代码

    copyOf (int[]original,int newlength)源代码:
    copyOf (int[]original,int newlength)源代码

    equals (int[] a,int[] b)源代码:equals (int[] a,int[] b)源代码

    fill(int[] a,int val源代码:
    fill(int[] a,int val源代码
    sort(int[] a)源代码:sort(int[] a)源代码
    toString(int[] a)源代码:
    在这里插入图片描述

    展开全文
  • 从对象数组中提取属性值作为数组

    千次阅读 2020-04-07 17:04:35
    I have JavaScript object array with the following structure: 我有以下结构的JavaScript对象数组: objArray = [ {

    本文翻译自:From an array of objects, extract value of a property as array

    I have JavaScript object array with the following structure: 我有以下结构的JavaScript对象数组:

    objArray = [ { foo: 1, bar: 2}, { foo: 3, bar: 4}, { foo: 5, bar: 6} ];
    

    I want to extract a field from each object, and get an array containing the values, for example field foo would give array [ 1, 3, 5 ] . 我想从每个对象中提取一个字段,并获取一个包含值的数组,例如foo字段将给出array [ 1, 3, 5 ]

    I can do this with this trivial approach: 我可以用这种简单的方法做到这一点:

    function getFields(input, field) {
        var output = [];
        for (var i=0; i < input.length ; ++i)
            output.push(input[i][field]);
        return output;
    }
    
    var result = getFields(objArray, "foo"); // returns [ 1, 3, 5 ]
    

    Is there a more elegant or idiomatic way to do this, so that a custom utility function would be unnecessary? 是否有更优雅或惯用的方式来执行此操作,从而不需要自定义实用程序功能?


    Note about suggested duplicate , it covers how to convert a single object to an array. 关于建议的重复项的注释,它涵盖了如何将单个对象转换为数组。


    #1楼

    参考:https://stackoom.com/question/1KCTh/从对象数组中提取属性值作为数组


    #2楼

    Yes, but it relies on an ES5 feature of JavaScript. 是的,但是它依靠JavaScript的ES5功能。 This means it will not work in IE8 or older. 这意味着它将无法在IE8或更低版本中使用。

    var result = objArray.map(function(a) {return a.foo;});
    

    On ES6 compatible JS interpreters you can use an arrow function for brevity: 在与ES6兼容的JS解释器上,为了简洁起见,您可以使用箭头功能

    var result = objArray.map(a => a.foo);
    

    Array.prototype.map documentation Array.prototype.map文档


    #3楼

    Using Array.prototype.map : 使用Array.prototype.map

    function getFields(input, field) {
        return input.map(function(o) {
            return o[field];
        });
    }
    

    See the above link for a shim for pre-ES5 browsers. 有关ES5之前版本浏览器的填充程序,请参见上面的链接。


    #4楼

    It depends of your definition of "better". 这取决于您对“更好”的定义。

    The other answers point out the use of map, which is natural (especially for guys used to functional style) and concise. 其他答案指出地图的使用是自然的(特别是对于习惯使用功能样式的人)并且简洁。 I strongly recommend using it (if you don't bother with the few IE8- IT guys). 我强烈建议使用它(如果您不打扰那些IE8-IT专家的话)。 So if "better" means "more concise", "maintainable", "understandable" then yes, it's way better. 因此,如果“更好”的意思是“更简洁”,“可维护”,“可理解”,那么它会更好。

    In the other hand, this beauty don't come without additional costs. 另一方面,这种美丽并非没有额外费用。 I'm not a big fan of microbench, but I've put up a small test here . 我不是microbench的忠实拥护者,但是我在这里做了一个小测试 The result are predictable, the old ugly way seems to be faster than the map function. 结果是可以预测的,旧的丑陋方法似乎比map函数要快。 So if "better" means "faster", then no, stay with the old school fashion. 因此,如果“更好”的意思是“更快”,那么不,保留传统的流行。

    Again this is just a microbench and in no way advocating against the use of map , it's just my two cents :). 同样,这只是一个微平台,绝不主张使用map ,这只是我的两分钱:)。


    #5楼

    Check out Lodash's _.pluck() function or Underscore's _.pluck() function. 查看Lodash的_.pluck()函数或_.pluck()_.pluck()函数。 Both do exactly what you want in a single function call! 两者都完全可以在单个函数调用中完成您想要的!

    var result = _.pluck(objArray, 'foo');
    

    Update: _.pluck() has been removed as of Lodash v4.0.0 , in favour of _.map() in combination with something similar to Niet's answer . 更新: _.pluck()从Lodash v4.0.0起已被删除 ,转而使用_.map()并结合了类似于Niet的答案 _.pluck() is still available in Underscore . _.pluck()_.pluck()中仍然可用

    Update 2: As Mark points out in the comments , somewhere between Lodash v4 and 4.3, a new function has been added that provides this functionality again. 更新2:正如Mark 在注释中指出的那样,在Lodash v4和4.3之间的某个地方,添加了一个新功能,再次提供了此功能。 _.property() is a shorthand function that returns a function for getting the value of a property in an object. _.property()是一种简写函数,它返回用于获取对象中属性值的函数。

    Additionally, _.map() now allows a string to be passed in as the second parameter, which is passed into _.property() . 此外, _.map()现在允许将字符串作为第二个参数传递进来,该字符串被传递到_.property() As a result, the following two lines are equivalent to the code sample above from pre-Lodash 4. 结果,以下两行等效于Lodash 4之前的上述代码示例。

    var result = _.map(objArray, 'foo');
    var result = _.map(objArray, _.property('foo'));
    

    _.property() , and hence _.map() , also allow you to provide a dot-separated string or array in order to access sub-properties: _.property()以及_.map() ,还允许您提供一个以点分隔的字符串或数组,以便访问子属性:

    var objArray = [
        {
            someProperty: { aNumber: 5 }
        },
        {
            someProperty: { aNumber: 2 }
        },
        {
            someProperty: { aNumber: 9 }
        }
    ];
    var result = _.map(objArray, _.property('someProperty.aNumber'));
    var result = _.map(objArray, _.property(['someProperty', 'aNumber']));
    

    Both _.map() calls in the above example will return [5, 2, 9] . 上例中的两个_.map()调用都将返回[5, 2, 9] _.map() [5, 2, 9]

    If you're a little more into functional programming, take a look at Ramda's R.pluck() function, which would look something like this: 如果您更喜欢函数式编程,请看一下R.pluck() R.pluck()函数,它看起来像这样:

    var result = R.pluck('foo')(objArray);  // or just R.pluck('foo', objArray)
    

    #6楼

    Function map is a good choice when dealing with object arrays. 处理对象数组时,函数映射是一个不错的选择。 Although there have been a number of good answers posted already, the example of using map with combination with filter might be helpful. 尽管已经发布了许多好的答案,但结合使用带有过滤器的地图的示例可能会有所帮助。

    In case you want to exclude the properties which values are undefined or exclude just a specific property, you could do the following: 如果要排除未定义值的属性或仅排除特定属性,可以执行以下操作:

        var obj = {value1: "val1", value2: "val2", Ndb_No: "testing", myVal: undefined};
        var keysFiltered = Object.keys(obj).filter(function(item){return !(item == "Ndb_No" || obj[item] == undefined)});
        var valuesFiltered = keysFiltered.map(function(item) {return obj[item]});
    

    https://jsfiddle.net/ohea7mgk/ https://jsfiddle.net/ohea7mgk/

    展开全文
  • 数组对象下面的添加属性的方法

    我在做项目时遇到一个数组请求回来时,我只要取其中的几个属性就可以了,并且把这几个属性追加到新的数组里面,接着把这个新的数组把它追加到每个数组下面成为新属性,具体实现步骤如下:

    1.var arry = request.data.data //加入这是我请求回来的数组: 

     

     2.接着想在这六条数据对应的对象属性把其中的几项属性追加到数组里面,我们可以通过for循环,然后取得数据后,再添加属性:

     for (let i = 0; i < arry.length; i++) {
    
              var goods_Arr = {}  //先定义一个对象,然后再把下面请求回来的属性放进来
    
    
              goods_Arr.goods_Id = arry[i].id
    
              goods_Arr.goods_name = arry[i].name
    
              goods_Arr.goods_num = arry[i].storage
    
              goods_Arr.goods_Img = arry[i].thumbImage
    
              arry[i].set_list = [goods_Arr]   //最后把这个对象放到数组里面
    
    
            }
            console.log('arri', arry)

    效果图: 

     这里我如果想在属性set_list数组后面再追加52条数据的话可以这样做

     1.先把52条数据数组循环遍历出来,然后也是把它其中需要的几个属性拿出来,然后再追加到一个数组里面,接着用数组的api属性concat() 把两个数组连接起来,具体代码如下:

               var arrSelect = []    //先定义一个空数组
    
                var goods_List = res.data.data  //这是请求回来的52条数据
    
                console.log('gg', goods_List)
    
                for (let i = 0; i < goods_List.length; i++) {  //接着循环遍历它
    
                  var add_list = {}    //定义一个空对象 
    
                  add_list.goods_Id = goods_List[i].id   //把需要用到的属性取出来
    
                  add_list.goods_name = goods_List[i].name
    
                  add_list.goods_num = 1
    
                  add_list.goods_Img = this.data.Imag + goods_List[i].thumbImage
    
                  arrSelect.push(add_list)  //接着把所有的数据丢到一个数组里面去
    
                }
    
                // console.log('arrSelect', arrSelect)
    
    
                for (let i = 0; i < arry.length; i++) {
    
    
                  arry[i].set_list = arry[i].set_list.concat(arrSelect)
    
                 //这里再把52条数据追加到刚刚上面请求的新属set_list性数组后面去
    
                }
    
    
                console.log('arry', arry) //最终结果

    效果图如下:

     

     下面补充一下小知识this.setData({ arry: arry}), 这个可以全局调用,并且可以每个方法都可以有相同的this.setData({arry:arry}),以前我以为这个set一遍就不可以在别的方法用set了,其实不是,当你执行哪个方法它就会在哪个方法执行

     

     

     

    展开全文
  • 数组里面可以包含属性么?怎么将多个数组合并成一个带有多个属性数组呢?
  • 微信小程序更新二维数组中的对象或数组属性值,这里可能两种情况 1、微信小程序更新二维数组中的对象的属性值 更新二维数组中的某个对象的属性值,代码如下 js 代码 data: { familys:[ { familyName:...
  • 问题: 过滤掉某个数组对象 属性全部为某个值的 数组元素 涉及的问题数组嵌套对象再嵌套数组 aList && aList.filter( item => !(item.iList.every(({ state }) => state === 2) && ...
  • JavaScript数组的定义属性及使用 数组的定义    var arr = [ 1,2,3 ]; 或 var arr = new Array( 1,2,3 );... 数组中应该只存一种类型的变量。 数组属性 数组一般采用的属性 length lengt
  • 一、问题描述 ...参考:vue{__ob__: Observer} 二、问题分析 获取数组长度就是 this.chooseId.length 这个方法的,这个不要怀疑,而你 输出this.chooseId.length 为0 是因为,你获取的时机不...
  • 数组 7.1数组的概念 案例:计算5名学生的平均成绩  var a1,a2,a3,a4,a5;  a1 = Number(prompt("请输入分数"));  a2 = Number(prompt("请输入分数"));  a3 = Number(prompt("请输入分数"));  a4 = Number...
  • 1、两个对象的数组中,筛选出不相等的对象 this.dataSource 是原始的数据源,总数组 this.selectedRows 是表格选择后对象的数组 constnewDataSource=this.dataSource.filter((item,index)=>{ returnJSON....
  • 根据数组里的对象属性进行筛选

    千次阅读 2018-08-15 22:13:58
    下面的空白区是表格展示部分,在表格上方添加一个筛选栏,筛选后的结果在表格展示。 表格展示的数据结构例: skuData = [ { name: "a", num: "10" }, { name: "b", num:...
  • let data=[ { desc: ‘超清’,thumb:‘1’, code_url: ‘https://media.w3.org/2010/05/sintel/trailer.mp4’ }, { desc: ‘高清’,thumb:‘2’, code_url: ‘http://vjs.zencdn.net/v/oceans.mp4’ }, ...
  • Ajax提交数组参数会[] 问题

    千次阅读 2019-06-28 12:41:46
    用AJAX提交一个数组参数cpidArray,而且里面是UUID32加密的值,第一次用的是$.post()直接把参数名字写上去,DeBug显示传出来的数组是null, 2.其次:自己百度答案:     百度了一下说是要...
  • JSON.parse(JSON.stringify(this.caseData))
  • 一、测试数据 var specList = [  {specDesc:'1233'}, ...Fun ONE: 使用map()遍历specList并生成目标属性所构成的新数组mapArr,再利用set()传入数组并输出去重复后的数组(setArr)的特性,判断其size与a
  • 数组的项数保存在其length属性中,这个属性始终会返回0或更大的值。 数组最后一项的索引始终是length-1 const colors = ["red","blue","green"]; const names =[]; /* alert() 方法用于显示带有一条指定消息和一个 ...
  • 数组对象的属性与方法

    千次阅读 2017-12-21 14:44:31
    数组对象的属性与方法属性: constructor length prototype 方法: concat() join() pop() push() reverse() shift() slice() sort() splice() toSurce() toString() toLocaleString() unshift() ...
  • js数组中__ob__: Observer属性

    千次阅读 2020-08-17 17:55:45
    1.通过给数组赋定值方法发现,当数组值为死值时没有问题,当添加字段后有问题,无法更改该字段的值 2.通过复死值发现,添加字段后的数组多了一个__ob__: Observer属性 解决办法 通过JSON.parse(JSON.stringify(this....
  • 这算是一个小问题啦,但还是记录一下,以后再好好研究底层原理: 首先,解析的json字符串(String类型): [{“name”: “Android\u7a0b\u5e8f\u8bbe\u8ba1\u4e0e\u5f00\u53d1”, “tName”: “\u7a0b”, “week”:...
  • 工作遇到一个问题就是要动态给数组是对象添加或者删除某个数组,,本来想用for循环的但是这样就会一个bug就是每次都会添加,,最后只能使用indexOF  var a =[{"name":"1111"},{"name":"222"}] console.log...
  • 昨天为解决业务需求,需要在mysql 数据库类型为json字段的列提取指定的属性列表,因为之前对mysql数据库操作json数据的经验比较少,特此记录下,以备以后回顾。 首先,展示下我数据库保存的数据 (数据...
  • 转载于:https://www.cnblogs.com/wangRong-smile/p/9317790.html
  • 注释的比较详细,就不过做多解释了。 //index.js //获取应用实例 const app = getApp() Page({ // 这里data就是你当前界面所有的值。... list: [{ //定义数组 number: 1 }, { number: 1 }, ...
  • var doctorAry = [ ] ; var checkAry = [ ] ;...// datas是包含多个数组的大数组 //item是每一个小数组 datas.map((item,index) => { if(checkAry.indexOf(item.doctorName) == -1){ chec...
  • js数组中包含 __ob__: Observer属性

    千次阅读 2020-03-26 11:33:21
    vue中数组出现了__ob__: Observer,使用v-for遍历取不到值 解决办法: yourArr=JSON.parse(JSON.stringify(yourArr)) 再用v-for遍历yourArr就可以了。
  • 编写一个学生类 student,包含的属性有学号、姓名年龄,将所有学生存储在一个数组中,自拟数据,用数组的初始化方法给数组赋值,并实现如下操作: ①将所有学生年龄增加一岁 ②按数组中顺序显示所有学生信息 ③查找显示...
  • JavaScript数组属性和方法

    千次阅读 2012-11-02 21:28:06
    array可以放入字符串、也可以放入数字。以下是array提供的属性和方法 初始化数组 var arr = new Array(); 新建空数组 ... 新建带有值的数组 var arr3 = [3,4,5]; 简略的新建数组 a.length 属性,返

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,865
精华内容 123,146
关键字:

数组中带有属性的问题