最近几天,我一直在努力获得通行证。但是不知道如何解决这个问题。我正在做一个React项目。以下是我的问题
var array = [
{name: 'a', value: false},
{name: 'b', value: false},
{name: 'c', value: false},
{name: 'd', value: true},
{name: 'e', value: false}
]
我尝试使用Javascript filter
和forEach
方法,但无法找出完美的解决方案来获得names
为{{ 1}}。先前数据样本的预期输出应为:
value
答案 0 :(得分:2)
您可以使用Array.filter,然后使用Array.map。
filter
检查value === true
,它们map
将返回所需的字段。
var array = [{name: 'a', value: false}, {name: 'b', value: false}, {name: 'c', value: false}, {name: 'd', value: true}, {name: 'e', value: false}]
var ans = array.filter(function(o){
return o.value
}).map(function(o){
return o.name;
});
console.log(ans);
答案 1 :(得分:2)
您可以使用reduce()在数组上仅迭代一次来做到这一点:
var array = [
{name: 'a', value: false},
{name: 'b', value: false},
{name: 'c', value: false},
{name: 'd', value: true},
{name: 'e', value: false}
]
let res = array.reduce((acc, curr) =>
{
curr.value && acc.push(curr.name);
return acc;
}, []);
console.log(res);
或使用spread syntax和destructuring
:
var array = [
{name: 'a', value: false},
{name: 'b', value: false},
{name: 'c', value: false},
{name: 'd', value: true},
{name: 'e', value: false}
]
let res = array.reduce((acc, {name, value}) => value ? [...acc, name] : acc, []);
console.log(res);
答案 2 :(得分:1)
您只能使用reduce来实现此目的。仅当值为true时,才添加到acc数组。
const array = [{name: 'a', value: false}, {name: 'b', value: false}, {name: 'c', value: false}, {name: 'd', value: true}, {name: 'e', value: false}];
const res = array.reduce((acc, { name, value }) => value ? acc.concat(name) : acc, []);
console.log(res);
答案 3 :(得分:0)
使用简单的for
循环
var array = [{name: 'a', value: false}, {name: 'b', value: false}, {name: 'c', value: false}, {name: 'd', value: true}, {name: 'e', value: false}]
let op = []
for(let i=0; i<array.length; i++) {
if(array[i].value){
op.push(array[i].name)
}
}
console.log(op)
答案 4 :(得分:0)
使用 Object.values()和 find()我们可以遍历值并在数组中返回名称
var array = [
{name: 'a', value: false},
{name: 'b', value: false},
{name: 'c', value: false},
{name: 'd', value: true},
{name: 'e', value: false}
]
const result = arr => [Object.values(arr).find(val => val.value).name];
console.log(result(array)); // [ 'd' ]