Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 在Adonisjs中循环数据时出现重复结果_Javascript_Json_For Loop_Adonis.js - Fatal编程技术网

Javascript 在Adonisjs中循环数据时出现重复结果

Javascript 在Adonisjs中循环数据时出现重复结果,javascript,json,for-loop,adonis.js,Javascript,Json,For Loop,Adonis.js,我想从一个数据json返回两个不同的双循环数据。但循环的结果是一样的。。这是我的输入、循环过程和输出: "detail": [ { "qty": 2, "price": 1000, "item_id": "1" }, { "qty": 5, "price": 100000, "item_id": "2"

我想从一个数据json返回两个不同的双循环数据。但循环的结果是一样的。。这是我的输入、循环过程和输出:

"detail": [
        {
            "qty": 2,
            "price": 1000,
            "item_id": "1"
        },
        {
            "qty": 5,
            "price": 100000,
            "item_id": "2"
        }
    ]
这是创建详细信息id的第一个流程循环:


const detail = request.input("detail");
const history = request.input("detail");

            for (var i = 0; i < detail.length; i++) {
                if(!detail[i].detail_id) {
                    detail[i].detail_id = nanoid(21);
                }
                console.log(detail[i]);
                //output:
                // [
                   // {
                      // "qty": 2,
                      // "price": 1000,
                      // "item_id": "1",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // },
                   // {
                      // "qty": 5,
                      // "price": 100000,
                      // "item_id": "2",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // }
                 //]
             }
             for (var x = 0; x < history.length; x++) {
                if(!history[x].history_id) {
                    history[x].history_id = nanoid(21);
                }
                console.log(history[x]);
                //output:
                // [
                   // {
                      // "qty": 2,
                      // "price": 1000,
                      // "item_id": "1",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // },
                   // {
                      // "qty": 5,
                      // "price": 100000,
                      // "item_id": "2",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // }
                 //]
             }


const detail=request.input(“细节”);
const history=request.input(“细节”);
对于(变量i=0;i
创建历史\u id的第二个循环:


const detail = request.input("detail");
const history = request.input("detail");

            for (var i = 0; i < detail.length; i++) {
                if(!detail[i].detail_id) {
                    detail[i].detail_id = nanoid(21);
                }
                console.log(detail[i]);
                //output:
                // [
                   // {
                      // "qty": 2,
                      // "price": 1000,
                      // "item_id": "1",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // },
                   // {
                      // "qty": 5,
                      // "price": 100000,
                      // "item_id": "2",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // }
                 //]
             }
             for (var x = 0; x < history.length; x++) {
                if(!history[x].history_id) {
                    history[x].history_id = nanoid(21);
                }
                console.log(history[x]);
                //output:
                // [
                   // {
                      // "qty": 2,
                      // "price": 1000,
                      // "item_id": "1",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // },
                   // {
                      // "qty": 5,
                      // "price": 100000,
                      // "item_id": "2",
                      // "detail_id": "fDRS0NIaoNoS9kiauypjy"
                   // }
                 //]
             }

for(var x=0;x
第二次循环的结果与第一次循环的结果相同,这段代码有什么问题

const requestInput=[{
“数量”:2,
“价格”:1000美元,
“项目id”:“1”
},
{
“数量”:5,
“价格”:100000美元,
“项目id”:“2”
}
];
const detail=requestInput;
const history=请求输入;
函数nanoid(id){
返回'fDRS0NIaoNoS9kiauypjy';
}
对于(变量i=0;iconsole.log(历史记录)您需要对传入的数据进行深度复制。现在,细节和历史都指向同一个对象。使用[…数据]将创建浅拷贝。这是不够的,因为我们有嵌套数据。Lodash是一种流行的深度复制工具:

let数据=[
{
数量:2,
价格:1000,
项目编号:“1”
},
{
数量:5,
价格:100000,
项目编号:“2”
}
];
//它们都引用同一个对象
const detail=数据;
常数历史=数据;
对于(变量i=0;i
你能试试
constdetail={…request.input(“detail”)};const history={…request.input(“detail”)}
?@LevBuchel我认为
request.input(“detail”)
给出了一个arrayhmm,但是如何从第二个循环中删除detail\u id呢?详细信息\u id仍然包含在
历史记录中
我更新了上面的答案,但为了更好地解释它,您需要创建一个深度副本,如果对象是。现在,细节和历史都在引用同一件事。尝试使用:)