精华内容
下载资源
问答
  • 问题原因: 原始和引用 ...引用:存储在堆(heap)中的对象,也就是说,存储在变量处的是一个指针(point),指向存储对象的内存处。 官方文档:http://www.w3school.com.cn/js/pro...

    问题原因:

    原始值和引用值

    在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

    原始值:存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。

    引用值:存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

    å­å¨å¨å åæ ä¸­çåå§å¼åå¼ç¨å¼

    官方文档:http://www.w3school.com.cn/js/pro_js_value.asp

    案例如下:

    <script src="https://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"></script>
    
        <script type="text/javascript">
            
            //定义变量
            var data_mydataD =Array();
            function Deliver() {
                       
                var data =Array();
                data['Field_1'] = 0;
                data['Field_2'] = 0;
                data['Field_3'] = 0;
                //初始值
                console.log(data);
                console.log(data_mydataD);
                if (data) {
                    data_mydataD = data;
                    DeliverC(data_mydataD);
    
                    //改变值
                    console.log(data);
                    console.log(data_mydataD);
    
                }
            }
            function DeliverC(mydataD) {
    
                mydataD['Field_1'] = -1;
                mydataD['Field_2'] = -1;
                mydataD['Field_3'] = -1;
            };
    
            Deliver();
        </script>

    运行结果:

    当我改变mydataD的传入参数时data也跟着改变了

    通过查找资料得知,对数组对象赋值是引用关系,感觉像是使用了同一内存空间,解决方法如下。

    1.方法一:

    使用jQuery.extend()方法,jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象

    官方文档:http://www.runoob.com/jquery/misc-extend.html

    2.方法二:

    使用Object.create 函数,创建一个具有指定原型且可选择性地包含指定属性的对象

    官方文档:https://msdn.microsoft.com/zh-cn/library/ff925952(v=vs.94).aspx

    代码修改如下:

    <script src="https://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"></script>
    
        <script type="text/javascript">
            
            //定义变量
            var data_mydataD =Array();
            function Deliver() {
                       
                var data =Array();
                data['Field_1'] = 0;
                data['Field_2'] = 0;
                data['Field_3'] = 0;
                //初始值
                console.log(data);
                console.log(data_mydataD);
                if (data) {
    
                    //原赋值方式
                    data_mydataD = data;
    
                    //方法一:
                    data_mydataD = $.extend(true, [], data);
    
                    //方法二:
                    // data_mydataD = Object.create(data);
    
                    DeliverC(data_mydataD);
    
                    //改变值
                    console.log(data);
                    console.log(data_mydataD);
    
                }
            }
            function DeliverC(mydataD) {
    
                mydataD['Field_1'] = -1;
                mydataD['Field_2'] = -1;
                mydataD['Field_3'] = -1;
            };
    
            Deliver();
        </script>

    运行结果:

    如果想赋值对象可以改成$.extend(true, {}, data);

    运行结果如下

     

    展开全文
  • //两个数组对象中查看 其中一个数组对象是否包含另一个数组对象中的 let arr = [ {key:1,val:"张胜男"}, {key:2,val:"王五"}, {key:3,val:"李四"}, {key:4,val:"刘超"}, {key:5,val:"赵四"} ] let arr2 = ...
      //两个数组对象中查看 其中一个数组对象是否包含另一个数组对象中的值
          let arr = [
            {key:1,val:"张胜男"},
            {key:2,val:"王五"},
            {key:3,val:"李四"},
            {key:4,val:"刘超"},
            {key:5,val:"赵四"}
          ]
          let arr2 = [
            {key:1,val:"张胜男"},
            {key:2,val:"王五"},
           {key:6,val:"666"},
           {key:7,val:"777"},
           {key:8,val:"888"},
           {key:9,val:"999"},
          ]
          //如果能找到就返回对应的下标,如果找不到,就返回-1
          for(let i=0;i<arr.length;i++){
            const Index = arr2.findIndex((item) => {return item.key === arr[i].key})
            console.log(Index);  // 0、1、-1、-1、-1
            // 前两个数据的key值相同,打印出对应的下标 ,后面找不相同的key  输出-1
          }
      //两个数组对象中查看 其中一个数组对象是否包含另一个数组对象中的值
          let arr = [
            {key:1,val:"张胜男"},
            {key:2,val:"王五"},
            {key:3,val:"李四"},
            {key:4,val:"刘超"},
            {key:5,val:"赵四"}
          ]
          let arr2 = [
            {key:1,val:"张胜男"},
            {key:2,val:"王五"},
           {key:6,val:"666"},
           {key:7,val:"777"},
           {key:8,val:"888"},
           {key:9,val:"999"},
          ]
          
          for(let task of arr){
            const itemJson = arr2.find((item)=>{return item.key === task.key});
            console.log(itemJson)
            //{key: 1, val: "张胜男"}
            //{key: 2, val: "王五"}
            // 3 undefined
           // 如果有相同的值那么就返回对应的对象 如果没有则返回 undefined
           }

    上述两种方法都能找出 一个数组对象中是否包含另一个数组对象中的元素,两种方法返回的结果不同,一个是返回下标,另外返回对应的对象,在实际应用场景中可根据不同需要选择不同的使用方式。

    展开全文
  • 使用filter var datas = [ { "name": "一", "value": "11" }, { "name": "二", "value": "12" } ] var data= datas.filter(function(item){ return item.value== "12";... // [{name: "二", value: "12"}]

    使用filter

    var datas = [
        {
          "name": "一",
          "value": "11"
        },
        {
          "name": "二",
          "value": "12"
        }
     ]
     
    var data= datas.filter(function(item){
         return item.value== "12"; 
    })
    console.log(data); // [{name: "二", value: "12"}]
    
    展开全文
  • jQuery获取数组对象

    千次阅读 2019-05-19 17:30:41
    这时候我们需要获取其中某一个的或者要分别获取他们的,这时候我们可以用jQuery先获取一个对象数组,然后再获取其中的一个。先把代码奉上: <html> <head> <meta charset="utf-8"/> ...

    在我们用jQuery开发的时候会遇到这样的情况,name有多个或者相似的name有多个。这时候我们需要获取其中某一个的值或者要分别获取他们的值,这时候我们可以用jQuery先获取一个对象数组,然后再获取其中的一个值。先把代码奉上:

        <html>
            <head>
                <meta charset="utf-8"/>
                <title>jQuery获取多个数组的值</title>
                <script src="../js/jquery-2.1.4.min.js" type="text/javascript" charset="utf-8"></script>
                <script type="text/javascript">
                    function testjQueryArray(){
                        alert($("input[name='jQueryArray']")[0].value);
                        alert($($("input[name='jQueryArray']")[1]).val());
                        $("input[name^='jQueryArray']").each(function(i){
                            if(i == 2)
                                alert(this.value);
                        });
                        $("input[name^='jQueryArray']").each(function(i){
                            if(i == 0)
                                alert($(this).val());
                        });
                    }
                </script>
            </head>
            <body>
                <input type="text" name="jQueryArray" value="1111"/><br/>
                <input type="text" name="jQueryArray" value="1221"/><br/>
                <input type="text" name="jQueryArray" value="1331"/><br/>
                <input type="button" value="点击一下吧" οnclick="testjQueryArray()"><br/>
                <input type="button" name="bindFun" value="运行时绑定" />
            </body>
            <script>
                $(
                    $("[name='bindFun']").on("click",function(){
                        alert($("input[name='jQueryArray']")[0].value);
                        alert($($("input[name='jQueryArray']")[1]).val());
                        $("input[name^='jQueryArray']").each(function(i){
                            if(i == 2)
                                alert(this.value);
                        });
                        $("input[name^='jQueryArray']").each(function(i){
                            if(i == 0)
                                alert($(this).val());
                        });
                    })
                );
            </script>
        </html>

    说明:
    方式一: var orderId = $("input[name='jQueryArray']")[0].value;
    $("input[name='jQueryArray']")[0] 为一个Input对象,所以可以直接用原生JS的对象.value来获取
    方式二:$($("input[name='jQueryArray']")[i]).val();
    $("input[name='jQueryArray']")[i] 为一个Input对象,所以不能调用jQuery里的val()方法,如果要###用jQuery里的val()方法,需要将$("input[name='jQueryArray']")[i]转换为jQuery对象,即###$($("input[name='ajaxOrderId']")[i]);
    方式三:$("input[name^='jQueryArray']").each(function(i){if(i == 2)alert(this.value);});
    利用jQuery的each()函数来进行循环,获取其中的值。注意的是这里的this是原生DOM对象。
    ---------------------
    作者:weixin_34384557
    来源:CSDN
    原文:https://blog.csdn.net/weixin_34384557/article/details/87251103
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 数组对象和类数组对象区别

    千次阅读 2017-03-05 13:43:38
    数组对象:(看例子) var a = {}; var i =10; while(i  a[i] = i*i; i++; } 数组对象: var b = []; var i =0; while(i b[i] = i*i; i++; } 其实你从源代码上面去看也没有什么大的区别: 但是...
  • 将两个数组对象合成一个数组对象

    千次阅读 2020-11-06 12:00:40
    将两个数组对象合成一个数组对象 let a = [{ id: 1, name: "zhangsan" },{ id: 2, name: "lisi" }] let b = [{ id: 1, age: 18 },{ id: 2, age: 20 }] let c = a.map((item, index) => { return {.....
  • Js 查找数组对象中的

    千次阅读 2021-01-13 10:08:15
    在示例数组中,如果需要通过某对象的名称来或者对应对象的id。简单来说,就是获取小明的id。 var array = [ { name: "小明", id: 1}, { name: "小吉", id: 2} ]; 方法: let obj = array.find(o => o....
  • JS 二维数组 对象数组 对象中的数组

    千次阅读 2019-02-27 19:07:00
    一:二维数组 1.初始化:var grades = [ [12, 19, 10], [22, 11, 11], ...二:对象数组 1.初始化: var ChannelInfo = new Array(25);//存放通道信息的数组 for(var i = 0;i<25;i++) {  ...
  • 数组与数组对象

    千次阅读 2019-06-09 15:50:34
    数组只是一个值得集合,而数组对象是一个对象的集合;数组对象的范围更大。 数组是一个值得集合,每一个都有一个索引号,索引从0开始而每个索引都有一个相应的,根据需要添加更多的。数组有一维数组、二维数组...
  • 判断数组对象属性是否相等

    千次阅读 2020-03-11 12:25:15
    因项目的要求,返回来的所有都要,所以使用数组的filter,indexOf方法并不能达到预期的要求; 解决办法: 判断进入else里面就是重复的; 最后得到的效果如下: ![在这里插入有防盗链机制,建议将图片保存下来...
  • // 数组去重 var sDataArray = ['1', '2', '3', '2', '1', '2']; console.log([...new Set(sDataArray)]) // [ '1', '2', '3' ] // 字符串去重 var sDataString = 'acdaaaddss' console.log([...new Set(sDataString...
  • 在工作中有时前台展示需求的不同要把后台的数组对象进行再分类。 举个栗子: let arr = [ { date: '2018-01-06',SW: '90.95', LL: '136', XXSW: '80.22',CKLL: '500' }, { date: '2018-01-06', SW: '164.95', ...
  • vue根据已知删除数组元素或数组对象 Array.prototype.remove = function (array, val, flag, key) { // flag: true 数组为数组对象,false 普通数组 if (flag) { array = array.findIndex(item => item[key...
  • Js 判断数组对象中是否有某个

    千次阅读 2021-01-27 10:06:44
    * 判断数组对象中是否有某个 * @author mossbaoo * @param {*} array 要查询的数组 * @param {*} attr 要查询的字段 * @param {*} val 要查询的字段 */ function findElem(array, attr, val) { for (var ...
  • javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法前言在js中,数组对象的复制如果使用=号来进行复制,那只是浅拷贝。如下图演示: 如上,arr的修改,会影响arr2的,这显然在绝大多数情况下,并...
  • 数组对象

    千次阅读 2018-08-29 20:58:48
    数组对象 数组创建 var arr = new Array(); //空数组 var arr = new Array(number); //长度为number的空数组 var arr = new Array(val1,val2,val3); var arr = []; //空数组 var arr = [val1,val2,xal3]; ...
  • js将数组对象中某个相同的对象合并成一个新对象 需求:beforeData - - > afterData //源数组 var beforeData= [ { name: "tony", id: "1", age: "20" }, { name: "jack", id: "2", age: "21" }, { name: ...
  • 如何比较两个数组/对象或数组对象是否相等? 我们可以通过使用JSON.stringify()方法来转换比较 具体示例: 1.比较两个数组(数组中是对象)是否全等: let objArr = [{ nema: "123", age: "19" }, { ...
  • js 修改数组对象中的属性

    万次阅读 2019-07-13 17:14:41
    数据类型如下: var dataType=[{"type":"add",state":false},{"type":"update","state":false},{"type":"del","state":false}]; 分别修改: for(var i=0;i<dataType.length;... if(dataType[i].type=="add"){ ...
  • "Rule": [ { "type": "fruit", "fruitInfo": [ { "apple": "sweet", "pineapple": "sour", } ], ... 最外层是数组对象,里面也是数组对象,我要怎么把里面的数组填到外层数组里呢
  • js把数组对象的某个属性的提取出来组成新的数组 解决方法: 假如我想获取数组中对象的id属性的组成新的字符串数组,直接使用map遍历return即可:http://www.yayihouse.com/yayishuwu/chapter/2585
  • 需求:后台将一个带有日期格式(不是时间戳)的数组对象给到前端,前端打印这个数组对象的日期时需要按时间降序排列 思路: 1.先将对象中的日期字段变成时间戳,然后通过sort()来排序,接着将对象中的时间戳变成日期...
  • 我有一个未命名的对象数组,其中包含一个命名对象数组,我需要获取“名称”是“字符串1”的对象。这是一个示例数组。 var array = [ { name:"string 1", value:"this", other: "that" }, { name:"string 2", ...
  • 现在有这样一个数组,后端给的, policyDtos: [{clazzType: 1, clazzTypeText: '限签', remark: '严格限签', sourceTypeText: '地区收集'}, {clazzType: 2, clazzTypeText: '限售', remark: '限售', sourceTy
  • 根据数组对象中的属性删除对象

    千次阅读 2017-01-22 18:42:00
    一个数组中包括三个对象 我要根据属性isHost的为1,来删除其中的object; 最后,解决的方法: var member2 = [];//可以把筛选后的对象存入数组中; function removeByValue(arr,attr,value) {//数组,...
  • 现在有一个数组对象,也就是数组元素是对象类型,现在的需求是根据对象的某个属性,找到该数组对应的元素(对象),比如根据"bianma"=="11",找到对应的"name"为"商品房" : 该数组对象数据如下: var datas = [ { ...
  • 数组对象中的最大

    千次阅读 2019-01-19 17:57:08
    就拿这个数组对象来说 var Data=[ {city:'w',平均AROU:25.1,收入占比:16.5}, {city:'x',平均AROU:4.1,收入占比:14.5}, {city:'e',平均AROU:30.1,收入占比:17.5}, {city:'a',平均AROU:22.1,收入占比:1.5}, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,274,190
精华内容 509,676
关键字:

数组对象值