Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery附加到嵌套数组_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript jQuery附加到嵌套数组

Javascript jQuery附加到嵌套数组,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,是否可以使用push或类似方法以JSON对象中的特定嵌套数组为目标 下面是一个JSON对象的示例: var json = [ { "Id": 0, "Fruits": [{ "FruitId": 0, "Amount": null }] }, { "Id": 1, "Fruits": [{ "FruitId": 2, "Amount": { "IsNull": false, "Value": 50.0000 } }, { "FruitId": 8, "Amount

是否可以使用
push
或类似方法以JSON对象中的特定嵌套数组为目标

下面是一个JSON对象的示例:

var json = [
        { "Id": 0, "Fruits": [{ "FruitId": 0, "Amount": null }] },
        { "Id": 1, "Fruits": [{ "FruitId": 2, "Amount": { "IsNull": false, "Value": 50.0000 } }, { "FruitId": 8, "Amount": { "IsNull":
false, "Value": 700.0000 } }]}, 
        { "Id": 2, "Fruits": [{ "FruitId": 0, "Amount": null }] },
        { "Id": 3, "Fruits": [{ "FruitId": 0, "Amount": null }] }
    ];

var output = JSON.stringify(json);

var fruitsArray = $.parseJSON(output);
我想在Id:2的水果中插入
{“水果Id”:8,“金额”:50}

从我看到的示例中,re
push
只需将一个对象推送到JSON对象的末尾,我希望能够在这里动态追加


任何帮助都将不胜感激:-)

您首先必须找到索引,然后在该索引上插入数据

   var json = [
            { "Id": 0, "Fruits": [{ "FruitId": 0, "Amount": null }] },
            { "Id": 1, "Fruits": [{ "FruitId": 2, "Amount": { "IsNull": false, "Value": 50.0000 } }, { "FruitId": 8, "Amount": { "IsNull": false, "Value": 700.0000 } }]}, 
            { "Id": 2, "Fruits": [{ "FruitId": 0, "Amount": null }] },
            { "Id": 3, "Fruits": [{ "FruitId": 0, "Amount": null }] }
        ];


    var indexNo = json.findIndex(function(obj) {
        return obj['Id'] == 2;
    });
    indexNo != -1 ? json[indexNo]['Fruits'].push({"FruitId":8,"Amount":5000}) : "Not found";
--------------使用for循环查找索引-----------

var json=[
{“Id”:0,“水果”:[{“FruitId”:0,“Amount”:null}]},
{“Id”:1,“水果”:[{“水果Id”:2,“金额”:{“IsNull”:false,“Value”:50.0000},{“水果Id”:8,“金额”:{“IsNull”:false,“Value”:700.0000}},
{“Id”:2,“Fruits”:[{“FruitId”:0,“Amount”:null}]},
{“Id”:3,“水果”:[{“水果Id”:0,“数量”:null}]}
];
var指数no=-1;
for(var i=0;i
和另一种方法:

 $.each(json,function(ix,record) {
           if(record.Id == 2)
              {
                  record.Fruits.push({"FruitId":8,"Amount":50})
               }
               });

您可以使用函数
find
查找特定对象,然后将其添加到数组中

let数组=[{“Id”:0,“水果”:[{“FruitId”:0,“Amount”:null},{“Id”:1,“水果”:[{“FruitId”:2,“Amount”:{“IsNull”:false,“Value”:50.0000},{“FruitId”:8,“Amount”:{“IsNull”:false,“Value”:700.0000},{“Id”:2,“水果”:[{“水果Id”:0,“数量”:null}]},{“Id”:3,“水果”:[{“水果Id”:0,“数量”:null}]},
targetId=2,
对象={“水果ID”:8,“数量”:50},
target=array.find(({Id})=>Id==targetId);
if(target)target.Fruits=[…target.Fruits,object];
console.log(数组);

.as控制台包装{最大高度:100%!重要;顶部:0;}
是否要插入或替换?谢谢,但我收到
0x800a01b6-JavaScript运行时错误:在尝试运行代码时,对象不支持属性或方法“findIndex”
。您的浏览器似乎不支持此功能…我想是较旧的版本!我已在for Loop的帮助下更新了索引所在的ans谢谢,that替换当前的水果数组,而不是追加。
 $.each(json,function(ix,record) {
           if(record.Id == 2)
              {
                  record.Fruits.push({"FruitId":8,"Amount":50})
               }
               });