循环Javascript数组对象并使用条件分隔对象

循环Javascript数组对象并使用条件分隔对象,javascript,arrays,object,Javascript,Arrays,Object,假设我有一个名为data的变量 const data = [ {loanname: "Mr X", acnumber: "020000000000001", outstanding: "54000"}, {loanname: "Mrs Y", acnumber: "020000000000087", outstanding: "87000"},

假设我有一个名为data的变量

const data = [
        {loanname: "Mr X", acnumber:  "020000000000001", outstanding: "54000"},
        {loanname: "Mrs Y", acnumber: "020000000000087", outstanding: "87000"},
        {loanname: "Mr Z", acnumber:  "020000000000103", outstanding: "15000"},
        {totalaccount: "3", outstanding: "156000"},
        {loanname: "David", acnumber: "020000000000091", outstanding: "11000"},
        {loanname: "James", acnumber: "020000000001291", outstanding: "4000"},
        {totalaccount: "2", outstanding: "15000"},

    ]
这是一个数组。我想根据totalaccount存在的次数提取数据项。例如,在第一个totalaccount之前,有三个帐户。我想把它们提取出来

此外,在最后一个totalaccount之前,如果我们可以跳过第一个totalaccount,则有两个帐户。我想提取这两个帐户的信息

更准确地说,如何将数组转换为以下内容:

let firstOne = {loanname: "Mr X", acnumber:  "020000000000001", outstanding: "54000"},
    {loanname: "Mrs Y", acnumber: "020000000000087", outstanding: "87000"},
    {loanname: "Mr Z", acnumber:  "020000000000103", outstanding: "15000"},

let secondOne ={loanname: "David", acnumber: "020000000000091", outstanding: "11000"},
    {loanname: "James", acnumber: "020000000001291", outstanding: "4000"}, 

您可以使用以下方法轻松实现此结果

首先,检查是否存在
totalaccount
属性。如果
yes
则使用
array的
push
方法在
acc
中创建一个新数组。prototype
如果
totalaccount
属性不存在,则只需在
acc
的最后一个数组中推送对象即可。您需要使用
current

const数据=[
{贷款名称:“X先生”,acnumber:“0200000000000001”,未偿贷款:“54000”},
{贷款名称:“Y夫人”,acnumber:“0200000000000087”,未付:“87000”},
{贷款名称:“Z先生”,acnumber:“0200000000000103”,未偿贷款:“15000”},
{总账户:“3”,未清账户:“156000”},
{loanname:“David”,acnumber:“0200000000000091”,杰出:“11000”},
{贷款名称:“詹姆斯”,acnumber:“0200000000001291”,未偿贷款:“4000”},
{总账户:“2”,未清账户:“15000”},
];
设电流=0;
常量结果=数据减少((acc,curr)=>{
const{totalaccount}=curr;
if(总账户){
acc.push([]);
++电流;
}否则{
acc[当前]。推送(当前);
}
返回acc;
},
[[]]
);
常数[第一,第二]=结果;
console.log(第一);
console.log(第二个);
控制台日志(结果)试试这个逻辑(没有完全测试,只是一个想法)

constmyarray=[];
for(设i=0;i对于(设x=i-data[i].totalaccount;x,它返回所有帐号。它不会根据“totalaccount”来拆分这些号码。在我的问题中,我问是否可以将数组转换为名为“firstOne”和“secondOne”的变量。因为有两次“totalaccount”,所以我希望将数组拆分为两部分。如果有“总帐"3次,我希望数组分成三个部分,依此类推。我怎么做?你只要检查结果数组就可以了…@Rashel你不能有条件地在循环中创建任意变量,如firstOne、secondOne等。你可以创建一个数组或一个具有所需名称的属性的对象,并将将结果发送给他们,请参见。因为
result
将返回一个数组数组,因此您可以使用数组索引获取数据。@decpk您的代码适合我。我需要将结果拆分为多个部分,因为它们是不同类型的贷款,我需要将它们分开以供将来计算。