我有一个对象数组,如下所示

const input = [ {id : "1" , text: "ABC", value: "abc" }, {id : "2" , text: "DEF", value: "def" },  {id : "3" , text: "LMN", value: "lmn" } ]

当传递各自的输入时,上面的包装函数应该返回以下内容

const ids = ["1", "3"]
const values = ["def", "lmn"]
const texts = ["DEF", "LMN"]

getValues(input, ids, "text") // ["ABC", "LMN"]
getValues(input, values, "id") // ["2", "3"]
getValues(input, texts, "value") // ["def", "lmn"]

当传递ids个值的组并且必填字段为text时,它应该从输入数组中返回匹配的text个值.当valuesid作为必填字段传递时也是如此,它应该从输入返回所有匹配的ids

我试过的代码


function getValues(input1, input2, field){
  const result = input1.map(({id, text, value}) => {
     if(text === input2){
       return input1[field];
     }
  }); 
  return result;
}

推荐答案

下面是两个通用函数,它们过滤给定键属性的对象列表,该属性的值在提供的keyvalues的列表中,然后返回这些对象的 Select 的attr.

第二个选项将滤镜属性键和值折叠到一个对象中,如{"id": ids}.

const input = [ {id : "1" , text: "ABC", value: "abc" }, {id : "2" , text: "DEF", value: "def" },  {id : "3" , text: "LMN", value: "lmn" } ]

const ids = ["1", "3"];
const values = ["def", "lmn"];
const texts = ["DEF", "LMN"];

function getValuesOld(objects, key, keyvalues, attr) {
  return objects.filter(x => keyvalues.includes(x[key])).map(x => x[attr]);
}

console.log(getValuesOld(input, "id", ids, "text"));
console.log(getValuesOld(input, "value", values, "id"));
console.log(getValuesOld(input, "text", texts, "value"));

function getValues(objects, key, attr) {
  const [keyname, keyvalues] = Object.entries(key)[0];
  return objects.filter(x => keyvalues.includes(x[keyname])).map(x => x[attr]);
}

console.log(getValues(input, { "id": ids }, "text"));
console.log(getValues(input, { "value": values }, "id"));
console.log(getValues(input, { "text": texts }, "value"));

Javascript相关问答推荐

如何在加载的元数据上使用juserc和await中获得同步负载?

vanillajs-datepicker未设置输入值,日期单击时未触发更改事件

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

Promise Chain中的第二个useState不更新

在JS中拖放:检测文件

S文本内容和值不必要的不同

Chart.js-显示值应该在其中的引用区域

这个值总是返回未定义的-Reaction

如何将多维数组插入到另一个多维数组中?

Webpack在导入前混淆文件名

如何在.NET Core中将chtml文件链接到Java脚本文件?

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

匹配一个或多个可选重复的特定模式

基于产品ID更新条带产品图像的JavaScript命中错误

JWT Cookie安全性

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

如何在Jest中模拟函数

我无法在Api Reaction本机上发出GET请求

material UI自动完成全宽

找不到处于状态的联系人