Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 在回调中改变数组_Javascript_Node.js_Express - Fatal编程技术网

Javascript 在回调中改变数组

Javascript 在回调中改变数组,javascript,node.js,express,Javascript,Node.js,Express,更新:我不知道如何从MySQL结果循环中构建结果数组。关键是用原始数据中的标准化对象填充结果数组。 请帮忙 var people = []; for (let i = 0; i < rows.length; i++) { fillOutPeople(rows[i], function (person) { people.push(person); }); } console.log(shipments); const fillOutPeople = (r

更新:我不知道如何从MySQL结果循环中构建结果数组。关键是用原始数据中的标准化对象填充结果数组。 请帮忙

var people = [];
for (let i = 0; i < rows.length; i++) {
    fillOutPeople(rows[i], function (person) {
        people.push(person);
    });
}

console.log(shipments);

const fillOutPeople = (result, callback) => {
    var person = {
        id: result.id,
        name: result.personName,
        address: {
            line1: result.personAdd1,
            line2: result.personAdd2,
            city: result.personCity,
            state: result.personState,
            zip: result.personZip
        },
        familyMembers: []
    }
    getFamilyMembers(result.id, function (result) {
        person.familyMembers = result;
        return callback(person);
    }); 
}

function getFamilyMembers(personId, callback) {
    connection.query('SELECT * FROM familyMembers WHERE personId=' + personId, 
    function (err, rows, fields) {
        if (err) {
            console.log({ result: err });
        } else {
            familyMembers = [];
            rows.forEach(function (familyMember) {
                familyMembers.push({
                    id: familyMember.familyMemberId,
                    name: familyMember.name
                });
            });
            return callback(familyMembers);
        }
    });
}
var-people=[];
for(设i=0;i{
个人变量={
id:result.id,
name:result.personName,
地址:{
第1行:result.personald1,
第2行:result.personald2,
城市:结果,
状态:result.personState,
zip:result.personZip
},
家庭成员:[]
}
getFamilyMembers(result.id,函数(result){
person.familyMembers=结果;
返回回叫(人);
}); 
}
函数getFamilyMembers(personId,回调){
connection.query('从familyMembers中选择*,其中personId='+personId,
函数(错误、行、字段){
如果(错误){
log({result:err});
}否则{
家庭成员=[];
rows.forEach(函数(familyMember){
家庭成员({
id:familyMember.familyMemberId,
姓名:familyMember.name
});
});
返回回调(familyMembers);
}
});
}
也许是地图

const shipments = rows.map(rowItem => rowItem);
这将迭代“rows”数组,并为每一行调用一个函数,在本例中,它只是返回参数,但您可以始终使用一个方法操作数据并返回您想要的任何内容。

可能是map

const shipments = rows.map(rowItem => rowItem);

这将迭代“rows”数组,并为每一行调用一个函数,在本例中,它只是返回参数,但是,您可以始终使用一种方法来操作数据并返回您想要的任何内容。

看起来这会起作用…?@JackBashford除了
控制台外,其他功能都很好。在使用潜在的异步代码进行循环后,log
是否可以澄清您试图完成的操作?您更新的代码大大改进了问题,现在唯一的问题是,为什么要对这个函数使用回调。您确定要显示所有代码吗?有了显示的代码,Max建议的映射将更容易(1个函数用于获取输入参数,并给出一个人)Icepickle我不想更新我正在迭代的数组。看起来这样可以…?@JackBashford除了
控制台。log
在使用潜在的异步代码循环之后,你能澄清你想要完成什么吗OP?你更新的代码大大改进了这个问题,现在唯一的问题是,为什么要对这个函数使用回调。您确定要显示所有代码吗?在显示的代码中,Max建议的映射要容易得多(1个函数获取一个输入参数,并给出一个人)Icepickle我不想更新我正在迭代的数组,但map不会发生变化。如果它们是引用数组的其他对象,它们不会注意到这一变化。我认为它们不希望根据它们发布的代码实际发生变化。map不会发生变化。如果它们是引用数组的其他对象,它们不会注意到这一变化。我认为它们不希望根据发布的代码进行实际的变异。