javascript 我使用相同的过滤器的方法对2个不同的数组具有相同数量的元素,但im得到2个不同的值

qxsslcnc  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(176)
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个元素。

cgvd09ve

cgvd09ve1#

你的代码可以正常执行,因为你的第一个initial artist的id = 0,然后它被过滤掉,因为filter只包含truthy个filter值,所以只有剩下的2个artist在过滤后的数组中。不清楚为什么要过滤它。
也许你想得到用户ID的列表?在这种情况下,需要Array::map()

let initialArtists = [
    { id: 0, name: 'Marta Colvin Andrade' },
    { id: 1, name: 'Lamidi Olonade Fakeye'},
    { id: 2, name: 'Louise Nevelson'},
  ];

  let artist = initialArtists.map(a => a.id);
  
  console.log(artist);
vltsax25

vltsax252#

filter方法需要一个truthy值。你给它的ID。因此,当id为0时(JavaScript将其视为falsy值),该项将被过滤掉。
第一个数组有一个id为0的元素,第二个没有。这就是为什么你从第一个数组中得到的元素少了一个。

相关问题