在对象数组中找到属性(以字符串形式存储在变量中)

时间:2019-02-20 19:42:38

标签: javascript arrays foreach javascript-objects

我有一个对象数组,用于存储不同“学生”的数据。

var pupils = [
{
    id: 0,
    name: 'will'
},
{
    id: 1,
    name: 'megan'
}
];

我想创建一个名为“ findPupil”的函数,该函数具有三个参数:您知道的属性,您知道的值和要查找的属性。

假设您要查找的学生的ID为1,但您不知道他们的名字。在这种情况下,您可以这样调用函数:

var name = findPupil('id', 1, 'name'); // should now store 'Megan' as a string

这是我编写的函数:

function findPupil(property, value, find) {
pupils.forEach(function(pupil) {
    if(pupils[pupil][`${property}`] === value) {
      return pupils[pupil][`${find}`];
    }
  });
}

调用此函数将返回以下内容:

Error: Cannot read property 'id' of undefined

如何使此功能起作用?

4 个答案:

答案 0 :(得分:2)

使用Array.find()查找具有您知道的属性的对象,如果未找到对象,则使用默认值。从对象中提取Error in as.data.frame.default(data) : cannot coerce class ""mvr"" to a data.frame 属性:

find

答案 1 :(得分:0)

您可以使用.find()

var pupils = [{id: 0, name: 'will'},{id: 1,name: 'megan'}];

function getByPropertyAndValue(knownProp, knownValue, desiredProperty) {
  let pupil = pupils.find(p => p[knownProp] === knownValue); //Find pupil by property and value
  return pupil && pupil[desiredProperty]; //Return the value, or undefined if not found
}

console.log(getByPropertyAndValue("id", 1, "name"));

答案 2 :(得分:0)

if语句的一部分外,大多数代码都是正确的。请找到工作示例-

var pupils = [{
    id: 0,
    name: 'will'
  },
  {
    id: 1,
    name: 'megan'
  }
];

function findPupil(property, value, find) {
  let result
  pupils.forEach(function(pupil) {
    if (pupil[property] === value) {
      result = pupil[find];
    }
  });
  return result
}

var name = findPupil('id', 1, 'name');

console.log(name)

答案 3 :(得分:0)

    for(int j=0; j<10; j++){
        pid_t pid = fork();
        if( pid == 0 ) {
            printf("child: %d\n", j);
            exit(0);
        }
        else if( pid < 0 ) {
            perror("fork failed");
        }
        printf("parent: %d, ", j);
        fflush(stdout);
    }
    wait_all();
    printf("\n");

parent: 0, child: 0
parent: 1, child: 1
parent: 2, child: 2
parent: 3, child: 3
parent: 4, child: 4
parent: 5, child: 5
parent: 6, child: 6
parent: 7, child: 7
parent: 8, child: 8
parent: 9, child: 9