gpt4 book ai didi

javascript - 如何在javascript中使用字符串作为具有不同参数的对象?

转载 作者:行者123 更新时间:2023-11-29 16:34:29 24 4
gpt4 key购买 nike

我有一个名为 test 的帖子数组,下一个代码采用其他数组并推送帖子(如果名称等于某些内容):

var test = [];
docs = [{name: 'mateo',lastName: 'mateo'},
{name: 'Jhon',lastName: 'smith'}}]

docs.forEach(function(item) {
if(item.name === 'mateo'){
test.push(item);
}
});

我想对名称使用不同的参数,但我不知道如何,我试图使用类似的东西,但它不起作用:

var test = [];
docs = [{name: 'mateo', lastName: 'mateo'},
{name: 'Jhon',lastName: 'smith'}}]
const varNames = ['name','lastName'];

docs.forEach(function(item) {
for(i = 0; i < varNames.length; i++){
if(item.[varNames[i]] === 'mateo'){
test.push(item);
console.log(varNames[i]);
}
}
});

最佳答案

这不是括号表示法的工作原理。改变

if(item.["varNames[i]"] === 'mateo') {

致:

if(item[varNames[i]] === 'mateo') {

顺便说一下,一旦匹配到一个项目,您就应该中断循环:

if(item[varNames[i]] === 'mateo') {
test.push(item);
break;
}

您还可以将整个 for 循环替换为另一个名为 some 的数组函数,这样您的整个代码如下所示:

docs.forEach(function(item) {
var check = varNames.some(function(varName) {
return item[varName] === 'mateo';
});
if(check) {
test.push(item);
}
})

如果使用箭头函数,可以更短:

docs.forEach(item => {
if(varNames.some(varName => item[varName] === 'mateo')) {
test.push(item);
}
})

关于javascript - 如何在javascript中使用字符串作为具有不同参数的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52807920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com