如何在Javascript中返回具有特定条件的对象数组?

如何在Javascript中返回具有特定条件的对象数组?,javascript,Javascript,我有一个名为shows的对象数组: const shows = [{ "name": "John Doe Show", "rating": 1234, "alternative_name": null, }, { "name": "Jane Doe Show", "rating": 4321, "alternative_name": "Alternate Name 2", } { "name": "Other Show", "rating": 8

我有一个名为shows的对象数组:

const shows =  [{
   "name": "John Doe Show",
   "rating": 1234,
   "alternative_name": null,
},
{
   "name": "Jane Doe Show",
   "rating": 4321,
   "alternative_name": "Alternate Name 2",
}
{
   "name": "Other Show",
   "rating": 8842,
   "alternative_name": "Alternate Name 3",
}];
我特别想在函数getAlternateName()中获取可选名称。但我希望它的条件是,它不应该为空。我该怎么做呢


编辑:例如,对于Jane Doe秀,它有一个带有“Alternate name 2”的可选_名称,而对于John Doe秀,可选_名称为空。当我输入console.log(getAlternateName())时,它会显示:

[ { alternative_name: null },
{ alternative_name: 'Alternate Name 2' },
{ alternative_name: 'Alternate Name 3' } ]

但是,我只希望它显示“Alternate Name 2和Alternate Name 3,而不显示null。我该如何处理它?

您可以使用两种方法:

const显示=[{
“姓名”:“约翰·多伊秀”,
“评级”:1234,
“备选名称”:空,
},
{
“姓名”:“无名氏秀”,
“评级”:4321,
“备选名称”:“备选名称2”,
},
{
“名称”:“其他节目”,
“评级”:8842,
“备选名称”:“备选名称3”,
}];
函数getAltName(OnName){
const result=shows.filter(x=>x.name==oName)[0];
return result.alternative_name | |“找不到所需的数据。”;
}
//此方法用于修剪并仅获取具有备用名称的数据。
函数trimByAltName(){
返回显示.filter(x=>x.alternative_name!==null);
}
log('Get alternative name:'、getAltName('Jane Doe Show');
log('Get Filtered Data:',trimByAltName());
编辑:

这是一个函数,它将返回数组中所有可选名称的数组
shows
。如果数组中没有可选名称,它将不会出现在返回的数组中

function getAlternateName() {
    this.alternateNames = [];
    for (var i = 0; i < shows.length; i++) {
        if (shows[i].alternative_name) {
            this.alternateNames.push(shows[i].alternative_name);
        }
    }
    return this.alternateNames;
}
函数getAlternateName(){ this.alternateNames=[]; 对于(var i=0;i
const显示=[{
“姓名”:“约翰·多伊秀”,
“评级”:1234,
“备选名称”:空,
},
{
“姓名”:“无名氏秀”,
“评级”:4321,
“备选名称”:“备选名称2”,
},
{
“名称”:“比尔·多伊秀”,
“评级”:1243,
“备选名称”:“备选名称3”,
},
{
“姓名”:“吉尔·多伊秀”,
“评级”:4312,
“备选名称”:空,
}
];
函数getAlternateName(){
this.alternateNames=[];
对于(var i=0;iconsole.log(getAlternateName());
使用
map
提取
alternative_名称
,然后
过滤
以获得nun-
null
值。我冒昧地只返回一个字符串数组,而不是对象,以保持结果简短和集中

const显示=[{
“姓名”:“约翰·多伊秀”,
“评级”:1234,
“备选名称”:空,
},
{
“姓名”:“无名氏秀”,
“评级”:4321,
“备选名称”:“备选名称2”,
},
{
“名称”:“其他节目”,
“评级”:8842,
“备选名称”:“备选名称3”,
}];
const alternativeNames=shows
.map({alternative_name})=>alternative_name)
.filter(x=>x)

console.log(alternativeNames)
您可以写更多关于您的问题的详细信息吗,
显示
现在是一个数组。根据哪个属性进行过滤?以及当“alternative_name”为空时您希望得到什么结果?例如,对于Jane Doe Show,它有一个带有“alternative name 2”的可选_名称,“而对于John Doe秀,备选名称为空。当我console.log(getAlternateName())时,它将显示两个可选名称,但是,我只希望它显示Jane Doe show的可选名称。那么,您希望仅通过“可选名称”来过滤它们吗?因此,没有“alternative_name”的数据将不会显示?是的,我只希望“alternative_name”的数据。我不希望在我console.log函数时将null与其他数据一起显示。waldo233,这是解决您问题的最佳解决方案;)这比我的解决方案好,改用它吧!