首页 > 解决方案 > 通过 DOM 获取值,然后过滤数组以获取值返回 undefined

问题描述

我编写了一个函数,该函数应该过滤数组并返回与给定值关联的值。例如,通过知道一个名字,我想得到首字母。

大批

let members = [
    {
        id: 1,
        memberFullName: "Ben Stiller",
        memberInitials: "BS"
    },
    {
        id: 2,
        memberFullName: "Michael Jackson",
        memberInitials: "MJ"
    }
];

功能

function findMemberInitials(object) {
    let result = members.filter( obj => {
        return obj.memberFullName == object;
    })[0].memberInitials;
}

当我像 findMemberInitials("Ben Stiller"); 这样运行数组时 它按预期返回 BS。

当我尝试先从用户输入中获取值然后通过函数运行它时,它返回未定义。

let getMemberName = document.getElementById("name").value;
let getMemberInitials = findMemberInitials(getMemberName);

console.log(getMemberInitials); //returns undefined.

我不太确定我做错了什么。我尝试将其解析为字符串,但没有帮助。

标签: javascript

解决方案


你没有从函数中返回任何东西。其次你应该使用find()

let members = [
    {
        id: 1,
        memberFullName: "Ben Stiller",
        memberInitials: "BS"
    },
    {
        id: 2,
        memberFullName: "Michael Jackson",
        memberInitials: "MJ"
    }
];

function findMemberInitials(object) {
    return (members.find(obj => obj.memberFullName === object) || {}).memberInitials;
}

console.log(findMemberInitials("Michael Jackson"))


推荐阅读