Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中将字符串用作具有不同参数的对象?_Javascript_Arrays - Fatal编程技术网

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

如何在javascript中将字符串用作具有不同参数的对象?,javascript,arrays,Javascript,Arrays,我有一个post数组,它是call test,下一个代码使用另一个数组,如果名称等于某个值,则推送post: var test = []; docs = [{name: 'mateo',lastName: 'mateo'}, {name: 'Jhon',lastName: 'smith'}}] docs.forEach(function(item) { if(item.name === 'mateo'){ test.push(item); } }

我有一个post数组,它是call test,下一个代码使用另一个数组,如果名称等于某个值,则推送post:

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]);
        }
     } 
});
var测试=[];
docs=[{name:'mateo',lastName:'mateo'},
{name:'Jhon',lastName:'smith'}]
const varNames=['name','lastName'];
docs.forEach(功能(项目){
对于(i=0;i
括号符号不是这样工作的。改变

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);
    }
})

诀窍是迭代
varNames
docs
。您熟悉
.forEach
,因此本例使用它,尽管这可能是
.filter
的更好例子

const test=[];
const varNames=['name','otherName'];
常量文档=[
{name:'mateo'},
{name:'name'},
{name:'otherName'}
];
forEach(varName=>{
docs.forEach(doc=>{
if(doc.name==varName)test.push(doc);
});
});

控制台日志(测试)您真的应该使用它,一切都会变得更简单:

let docs=[
{name:'mateo',lastName:'johnson'},
{name:'Jhon',lastName:'smith'},
{name:'Mark',lastName:'mateo'}
]
var test=docs.filter(item=>item.name==“mateo”)

console.log(test)
请更新您的帖子,以包含一个完整的可运行示例。将
项。[“varNames[i]”]
替换为
项[varNames[i]
如果我使用[varNames[i]],我在运行nodejs时会出现语法错误(我在[“…”时会出现错误)我也不知道该怎么做才是问题所在。@ManuelEsteban在调用
forEach
之前是否已经有了
test
中的元素?谢谢你的some()数组的方法是我问题的解决方案。@ManuelEsteban不客气!顺便说一句,for
循环的
也很好,您只需更正括号符号的语法并添加
break
语句。
docs.forEach(item => {
    if(varNames.some(varName => item[varName] === 'mateo')) {
        test.push(item);
    }
})