首页 > 解决方案 > 传递键以将循环中的值与参数函数进行比较

问题描述

我想传入函数数组(列表)、keyField 和要比较的值

我尝试了以下代码:

let _ = require('lodash')

filterListBy(list, keyField,value) {
  return _.filter(list, function (data) {
      return data.keyField.toUpperCase() === value.toUpperCase()
    })
  }

let arr=[{
"name":"ABC",
"subject":"Java"
},{
"name":"XYZ",
"subject":"Java"
},{
"name":"PQR",
"subject":"Javascript"
}]

console.log(filterListBy(arr,'subject','java'))

但是出现错误:

return data.keyField.toUpperCase() === value.toUpperCase()
                          ^
TypeError: Cannot read property 'toUpperCase' of undefined

我想多次传递不同的数组并传递不同的 keyField 这就是我尝试这个的原因。

标签: javascriptnode.js

解决方案


function filterListBy(list, keyField,value) {
  return _.filter(list, function (data) {
      return data[keyField].toUpperCase() === value.toUpperCase()
    })
  }

[]可用于通过表达式键(与标识符相反)访问对象。


推荐阅读