javascript - 您如何遍历数组并仅提取特定值的键:值?
问题描述
我想遍历现有对象,只提取特定键以添加到新数组中。
该对象看起来像:
let lyricsData = {
"success": true;
"length": 50;
"result": [
{
"id_track": 123,
"haslyrics": true,
"id_artrist": 234,
},
{
"id_track": 567,
"haslyrics": false,
"id_artrist": 678,
}
]
}
如果“haslyrics”为真,我只想提取结果。
这是我想出的代码块:
1 function findHasLyrics(lyricsData) {
2 if (lyricsData.length === 0) {
3 console.log("findHasLyrics", null);
4 } else {
5 let hasLyricsTrue = [];
6 for (let i=0; i<lyricsData.length; i++) {
7 if (lyricsData.result[i].haslyrics === true) {
8 hasLyricsTrue.push(lyricsData.result[i]);
9 };
10 console.log("findHasLyrics", hasLyricsTrue);
11 };
12 };
13 };
代码在哪里破坏?我将如何解决它?
提前致谢。
解决方案(已编辑)。感谢@StepUp 和@Ankita。
我需要保留 if-else 语句。歌词数据是动态的,有时长度为 0。在这种情况下,我需要通过函数传递一个空值。
function findHasLyrics(lyricsData) {
if (lyricsData.length === 0) {
displayLyricsApi(null);
} else {
function findHasLyrics(lyricsData) {
return lyricsData.result.filter(f => f.haslyrics)
};
formatQueryLyrics(findHasLyrics(lyricsData));
};
}
解决方案
只需使用filter
方法:
lyricsData.result.filter(f=> f.haslyrics)
在你的情况下:
function findHasLyrics(lyricsData) {
return return lyricsData.result.filter(f=> f.haslyrics);
};
一个例子:
var data = {
"success": true,
"length": 50,
"result": [{
"id_track": 123,
"haslyrics": true,
"id_artrist": 234,
},
{
"id_track": 567,
"haslyrics": false,
"id_artrist": 678,
}
]
};
function findHasLyrics(lyricsData) {
return lyricsData.result.filter(f=> f.haslyrics)
};
console.log(findHasLyrics(data));