let initialArtists = [
{ id: 0, name: 'Marta Colvin Andrade' },
{ id: 1, name: 'Lamidi Olonade Fakeye'},
{ id: 2, name: 'Louise Nevelson'},
];
let artist = initialArtists.filter(a => a.id);
console.log(artist);
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
let someUsers = users.filter(item => item.id);
console.log(someUsers);
对两个数组都使用filter方法,我得到了第一个artist数组的意外返回。
第一个数组只返回数组的2个元素,第二个数组返回所有3个元素。
2条答案
按热度按时间cgvd09ve1#
你的代码可以正常执行,因为你的第一个initial artist的id = 0,然后它被过滤掉,因为filter只包含
truthy
个filter值,所以只有剩下的2个artist在过滤后的数组中。不清楚为什么要过滤它。也许你想得到用户ID的列表?在这种情况下,需要
Array::map()
:vltsax252#
filter方法需要一个truthy值。你给它的ID。因此,当id为0时(JavaScript将其视为falsy值),该项将被过滤掉。
第一个数组有一个id为0的元素,第二个没有。这就是为什么你从第一个数组中得到的元素少了一个。