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

获取第一个同时包含nameclick

的匹配对象
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;

变量名称需要与您的对象的键相匹配才能正常工作。