Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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_Arrays_Reactjs_Loops_Object - Fatal编程技术网

Javascript 在对象数组中连接字符串

Javascript 在对象数组中连接字符串,javascript,arrays,reactjs,loops,object,Javascript,Arrays,Reactjs,Loops,Object,我有如下的对象数组。我想通过它循环并获得闭合的属性值。它应该是在每个对象中找到的所有值的串联 例如,在下面的例子中,我希望最终结果为121212,因为它在所有3个对象中都有12个 const data = [ { "personId": "1208007855", "details": { "Closed": "12" } },

我有如下的对象数组。我想通过它循环并获得闭合的属性值。它应该是在每个对象中找到的所有值的串联

例如,在下面的例子中,我希望最终结果为121212,因为它在所有3个对象中都有12个

const data = [
    {
      "personId": "1208007855",
      "details": {
        "Closed": "12"
      }
    },
    {
      "personId": "1559363884",
      "details": {
        "Closed": "12"
      }
    },
    {
      "personId": "973567318",
      "details": {
        "Closed": "12"
      }
    }
  ]
有人能告诉我如何做到这一点吗。我试过这种方法,但没有成功。我只能得到第一个对象的值。不确定如何在这个循环中连接和存储下一个值

可能存在某些对象可能没有闭合属性的情况

const totalClosed = data.forEach(function (arrayItem) {
    const x = arrayItem.details.Closed;
    console.log(x);
});
请尝试以下操作:

常数数据=[ { 人名:1208007855, 详情:{ 闭馆时间:12 } }, { 人名:1559363884, 详情:{ 闭馆时间:12 } }, { 人名:973567318, 详情:{ 闭馆时间:12 } } ]; 结果=; 让我输入数据{ 结果+=数据[i].details.Closed }
此外,使用forEach时,元素的处理顺序可能不同于0到n,您可能会发现不同于预期的结果。

如果需要字符串和数组,最好的方法是reduce:

您可以使用.reduce功能:

data.reduceacumerator,item=>acumerator+=item.details.Closed


=>121212

如果要使用循环实现,请尝试使用:

const data = [
    {
      "personId": "1208007855",
      "details": {
        "Closed": "12"
      }
    },
    {
      "personId": "1559363884",
      "details": {
        "Closed": "12"
      }
    },
    {
      "personId": "973567318",
      "details": {
        "Closed": "12"
      }
    }
  ];
var res= ''
data.forEach((item)=>{if(item.details.Closed){ res += item.details.Closed;}})
console.log(res)
这也可以通过使用高阶函数来实现: 尝试使用:

data.reduce((res, item) =>{if(item.details.Closed)
 res += item.details.Closed;
return res}, '')
如果关闭字段存在,您可以创建一个空字符串并添加到其中。如果“closed”中存在另一个条件,您可以在if语句中进行检查。

以函数方式,使用reduce

常数数据=[ { 人名:1208007855, 详情:{ 闭馆时间:12, 分析:10 } }, { 人名:1559363884, 详情:{ 闭馆时间:12, 分析:10 } }, { 人名:973567318, 详情:{ 闭馆时间:12, 分析:10 } } ] const{Closed,Analyze}=data.reduceac,cur=>{ 附件关闭+=当前?详细信息?关闭?? acc.ANALYSE+=当前?详细信息?分析?? 返回acc },{关闭:,分析:} console.log{Closed,Analyze}使用foreach的方式与您尝试的方式完全相同:

const data = [
  {
    personId: '1208007855',
    details: {
      Closed: '12'
    }
  },
  {
    personId: '1559363884',
    details: {
      Closed: '12'
    }
  },
  {
    personId: '973567318',
    details: {
      Closed: '12'
    }
  }
];

let totalClosed = '';

data.forEach(function (arrayItem) {
  totalClosed = totalClosed + arrayItem.details.Closed;
});

console.log(totalClosed);

您可以通过在reducer中对条目进行分解并将关闭的值连接到运行的res结果来减少数据条目。可以使用nullish合并运算符??连接时使用空字符串而不是未定义的字符串

常数数据=[ {个人ID:1208007855,详细信息:{已关闭:12}}, {人名:1559363884,详细信息:{关闭:12}}, {personId:0000000000,详细信息:{Open:8}},//新建! {个人ID:973567318,详细信息:{已关闭:12}} ]; const value=data.reduceres,{details:{Closed}}=>res+Closed;
console.logvalue@Naren-如果我有另一个属性Analyze和Closed,如何在单个reduce中连接这两个属性的值?您可以使用object保存所有字符串作为结果。让我来that@ArenTrot更新了代码当数据[i].details.Closed未定义时案例如何在该案例中使用结果=;对于让我输入数据2{if typeof data2[i]?.details?.Closed!=“undefined”result+=data2[i]?.details?.Closed}当数据[i].details.Closed未定义时,情况如何?如果字段未定义,您可以写入项。details?.Closed??而不是item.details.Closed。如果item.details.Closed为null ish,它将返回一个空字符串:data.reduceacumerator,item=>acculator+=item.details?.Closed,
data.reduce((res, item) =>{if(item.details.Closed)
 res += item.details.Closed;
return res}, '')
let str = ''
const totalClosed = data.forEach(function (arrayItem) {
  if(arrayItem.details.Closed){
        str += arrayItem.details.Closed;
  }
});

console.log(str)
const data = [
  {
    personId: '1208007855',
    details: {
      Closed: '12'
    }
  },
  {
    personId: '1559363884',
    details: {
      Closed: '12'
    }
  },
  {
    personId: '973567318',
    details: {
      Closed: '12'
    }
  }
];

let totalClosed = '';

data.forEach(function (arrayItem) {
  totalClosed = totalClosed + arrayItem.details.Closed;
});

console.log(totalClosed);