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

Javascript 将值连接到对象数组中的字符串

Javascript 将值连接到对象数组中的字符串,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个TypeScript(Angular)中的对象数组,如果details数组不是空的,我只需要这个数组中的名称 [ {name: "Joe", detail: []}, {name: "Kevin", detail: [{salary: 2400}] }, {name: "Peter", detail: [{salary: 2100}]} ] 我想要这个结果Kevin,Peter在一个变量中 目前我已经这样做了

我有一个TypeScript(Angular)中的对象数组,如果details数组不是空的,我只需要这个数组中的名称

 [
  {name: "Joe", detail: []},
  {name: "Kevin", detail: [{salary: 2400}] },
  {name: "Peter", detail: [{salary: 2100}]}
]
我想要这个结果Kevin,Peter在一个变量中

目前我已经这样做了

 [
  {name: "Joe", detail: []},
  {name: "Kevin", detail: [{salary: 2400}] },
  {name: "Peter", detail: [{salary: 2100}]}
].map(function(elem){
return elem.name;}).join(",")
有人能帮我用Typescript或JavaScript来做这件事吗

我不希望Joe出现在结果中,因为Joe的详细信息是空的。我只是 想要
kevin,Peter

您可以使用
.reduce
destructure object
组合来解析它,如下所示

var数据=[
{姓名:“乔”,详情:[]},
{姓名:“凯文”,详细信息:[{工资:2400}]},
{姓名:“彼得”,详情:[{薪金:2100}]}
];
var result=data.reduce((acc,{name,detail})=>{
if(detail.length>0)acc.push(name)//将名称添加到结果中的条件
返回acc;
}, []);
console.log(result.join(“,”)
我不希望Joe出现在结果中,因为Joe的详细信息是空的。我只是
想要
kevin,Peter

您可以使用
.reduce
destructure object
组合来解析它,如下所示

var数据=[
{姓名:“乔”,详情:[]},
{姓名:“凯文”,详细信息:[{工资:2400}]},
{姓名:“彼得”,详情:[{薪金:2100}]}
];
var result=data.reduce((acc,{name,detail})=>{
if(detail.length>0)acc.push(name)//将名称添加到结果中的条件
返回acc;
}, []);
console.log(result.join(“,”)
const数组=[
{姓名:“乔”,详情:[]},
{姓名:“凯文”,详细信息:[{工资:2400}]},
{姓名:“彼得”,详情:[{薪金:2100}]},
];
常量过滤器阵列=数组。过滤器((obj)=>{
返回obj.detail.length>0;
});
const result=filteredArray.map((obj)=>obj.name.join(“,”);
控制台日志(结果)
const数组=[
{姓名:“乔”,详情:[]},
{姓名:“凯文”,详细信息:[{工资:2400}]},
{姓名:“彼得”,详情:[{薪金:2100}]},
];
常量过滤器阵列=数组。过滤器((obj)=>{
返回obj.detail.length>0;
});
const result=filteredArray.map((obj)=>obj.name.join(“,”);


控制台日志(结果)我不希望Joe出现在结果中,因为Joe详细信息为空。我只想要凯文,皮特更新了我的答案,请看一下^^!在AngularOops中有没有更好的方法。都一样。原文是
Javascript
code,而不是
framework
library
,bro:)简洁有效的答案。我不希望Joe出现在结果中,因为Joe的详细信息是空的。我只想要凯文,皮特更新了我的答案,请看一下^^!在AngularOops中有没有更好的方法。都一样。原文是
Javascript
代码,而不是
框架
,兄弟:)简洁而有效的答案。兄弟,签出签出不需要像这样重复两次。@Phong我已经读了你的答案,非常完美。Imran是一个新的贡献者,所以我认为我们应该帮助他给他尽可能多的选择。@Phong这是我们的首选,在性能和可读性/可维护性之间进行权衡。我发现
array.filter(obj=>obj.details.length>0).map(obj=>obj.name)
比使用
reduce
的方法更清晰(我以前也写过类似的代码),或者如果不想在数组上循环两次,我仍然会使用循环
const result=[];如果(obj.details.length>0)result.push(obj.name),则为(数组的常量obj)(格式正确)位于reduce的上方。但正如我所说,这是个人偏好。@Thomas非常正确,但兼容性是for…of循环的一个问题。因为它不受支持,并且每个数组方法都与所有浏览器兼容。@DeC这个问题在几年前随着构建管道的扩展而消亡。兄弟,不需要像这样循环两次。@Phong我已经阅读了你的答案,它非常完美。Imran是一个新的贡献者,所以我认为我们应该帮助他给他尽可能多的选择。@Phong这是我们的首选,在性能和可读性/可维护性之间进行权衡。我发现
array.filter(obj=>obj.details.length>0).map(obj=>obj.name)
比使用
reduce
的方法更清晰(我以前也写过类似的代码),或者如果不想在数组上循环两次,我仍然会使用循环
const result=[];如果(obj.details.length>0)result.push(obj.name),则为(数组的常量obj)(格式正确)位于reduce的上方。但正如我所说,这是个人偏好。@Thomas非常正确,但兼容性是for…of循环的一个问题。因为它不受所有浏览器的支持,并且每个数组方法都与所有浏览器兼容。@DeC这个问题在几年前随着构建管道和应用程序的扩展而消失。