这困扰着我好几个小时...我还不明白为什么。 我有一系列对象。我的语法对三进制有害吗?...
这很重要,它在React中。
数组如下所示
[{id:1, name:'steve'}, {id:2, name:'john'}]
如果我使用它,它将正常工作。
array.filter(item => { if (item.id ==id) return item.name} )
如果我使用它,它将返回我整个数组,而不进行任何过滤。
array.filter(item => item.id ===id ? item.name : 'null')
。
答案 0 :(得分:4)
答案 1 :(得分:3)
Array.filter()
的工作方式是从返回true
值的数组中选择那些元素。这并不意味着布尔值true
,而是定义的任何值。因此,在您的代码中,您将返回null
并用引号引起来的else
部分是一个字符串,而不是实际上的一个null
值。因此,它认为它是真实的,并在过滤后的数组中考虑该对象。将其更改为null
即可使用。
var array = [{
id: 10,
name: "name10"
},
{
id: 20,
name: "name20"
}
];
var id = 20;
var res = array.filter(item => item.id === id ? item.name : null);
console.log(res);
答案 2 :(得分:0)
您使用的filter
错误。
您可以检查documentation并查看callback
参数是一个返回true
或false
的函数。
因此,在您的情况下-您想按ID过滤数组,然后仅选择名称。
您可以链接filter
和map
。
例如,
let array = [{id:1, name:'steve'}, {id:2, name:'john'}];
let result = array
.filter(item => item.id === 1)
.map(item => item.name);
console.log(result);