javascript 匹配所有对象中定义的值,return 变量中的其余值
javascript match defined values in all objects and return rest of values in variable
我需要不使用任何框架的解决方案,只是简单的 javascript。
我有需要在数组项中搜索的初始值:
var name = 'blah';
var click = 'double';
我有这样的数组:
var items =
[
{
name: 'blah',
click: 'single',
url: 'url1',
token: 'token1'
},
{
name: 'blah',
click: 'double',
url: 'url2',
token: 'token2'
},
{
name: 'bar',
click: 'double',
url: 'url3',
token: 'token3',
},
{
name: 'baz',
click: 'single',
url: 'url4',
token: 'token4'
}
];
当我找到包含这两个值的对象时,在本例中:
{
name: 'blah',
click: 'double',
url: 'url2',
token: 'token2'
}
然后,我需要将该对象的其余值分配给单独的变量。在这种情况下,结果应该是:
var url = 'url2';
var token = 'token2'
问题是我不知道每次的搜索值是多少。例如,每次按下按钮时,搜索值都会不同。 “名称”的不同值和“点击”的不同值。
我只想检查该数组中的所有对象是否相同,并将其余值分配给变量。
更新:
我想也许首先创建包含来自“var name = blah”的匹配值的已找到对象数组
var names = items.filter(function(item) {return item.name === 'blah'});
然后搜索“名称”数组以查找与 var click = "double" 匹配的内容。
var match = names.filter(function(matchitem) {return matchitem.click === "double"});
获取第一个同时包含name
和click
的匹配对象
const item = items.find(item => item.name === name && item.click === click);
if (item){
url = item.url;
token = item.token;
}
如果需要的话也许可以。
var items = [
{
name: 'blah',
click: 'single',
url: 'url1',
token: 'token1'
},
{
name: 'blah',
click: 'double',
url: 'url2',
token: 'token2'
},
{
name: 'bar',
click: 'double',
url: 'url3',
token: 'token3',
},
{
name: 'baz',
click: 'single',
url: 'url4',
token: 'token4'
}
];
var name = 'blah';
var click = 'double';
items.forEach((item) => {
if(item.name == name && item.click == click){
console.log(item)
}
})
因此您可以访问该项目和所有内容。
您可以使用 find,这是 Array
原型上的一个方法。它会像这样工作
var match = items.find(function(item) {
return item.name === name && item.click === click;
}
或者用更现代的方式写
const match = items.find(item => item.name === name && item.click === click);
现在,如果您有匹配项,您可以 destructure 像下面这样为各种属性获取单独的变量。
const { url, token } = match;
变量名称需要与您的对象的键相匹配才能正常工作。
我需要不使用任何框架的解决方案,只是简单的 javascript。
我有需要在数组项中搜索的初始值:
var name = 'blah';
var click = 'double';
我有这样的数组:
var items =
[
{
name: 'blah',
click: 'single',
url: 'url1',
token: 'token1'
},
{
name: 'blah',
click: 'double',
url: 'url2',
token: 'token2'
},
{
name: 'bar',
click: 'double',
url: 'url3',
token: 'token3',
},
{
name: 'baz',
click: 'single',
url: 'url4',
token: 'token4'
}
];
当我找到包含这两个值的对象时,在本例中:
{
name: 'blah',
click: 'double',
url: 'url2',
token: 'token2'
}
然后,我需要将该对象的其余值分配给单独的变量。在这种情况下,结果应该是:
var url = 'url2';
var token = 'token2'
问题是我不知道每次的搜索值是多少。例如,每次按下按钮时,搜索值都会不同。 “名称”的不同值和“点击”的不同值。
我只想检查该数组中的所有对象是否相同,并将其余值分配给变量。
更新:
我想也许首先创建包含来自“var name = blah”的匹配值的已找到对象数组
var names = items.filter(function(item) {return item.name === 'blah'});
然后搜索“名称”数组以查找与 var click = "double" 匹配的内容。
var match = names.filter(function(matchitem) {return matchitem.click === "double"});
获取第一个同时包含name
和click
const item = items.find(item => item.name === name && item.click === click);
if (item){
url = item.url;
token = item.token;
}
如果需要的话也许可以。
var items = [
{
name: 'blah',
click: 'single',
url: 'url1',
token: 'token1'
},
{
name: 'blah',
click: 'double',
url: 'url2',
token: 'token2'
},
{
name: 'bar',
click: 'double',
url: 'url3',
token: 'token3',
},
{
name: 'baz',
click: 'single',
url: 'url4',
token: 'token4'
}
];
var name = 'blah';
var click = 'double';
items.forEach((item) => {
if(item.name == name && item.click == click){
console.log(item)
}
})
因此您可以访问该项目和所有内容。
您可以使用 find,这是 Array
原型上的一个方法。它会像这样工作
var match = items.find(function(item) {
return item.name === name && item.click === click;
}
或者用更现代的方式写
const match = items.find(item => item.name === name && item.click === click);
现在,如果您有匹配项,您可以 destructure 像下面这样为各种属性获取单独的变量。
const { url, token } = match;
变量名称需要与您的对象的键相匹配才能正常工作。