javascript - 使用 JavaScript 从对象数组中提取高效的名称值对

标签 javascript arrays

我在表格和 this post 中快速搜索了我的问题除了一个方面,基本上涵盖了所有内容。我只是在寻找有关解决方案提案的一些建议。

基本上,我有一个对象数组中的名称-值对列表

[{"name":"name1","value":"value1"},{"name":"name2","value":"value2"}] etc etc

假设我们有 100 个,我想搜索 1 个,一种方法(链接帖子中接受的答案)如下所示:

var data = [{"name":"name1","value":"value1"},{"name":"name2","value":"value2"}];
for(var i=0;i<data.length;i++){
  if(data[i]['name'] == 'name2'){
    console.log('The value is: ' + data[i]['value']);
    break;
  }
}

我的问题是,如果我想找到两个值怎么办?除了再次遍历数组以查找第二个值之外,是否有更有效的方法来执行此操作?例如,我们要搜索 name1 和 name2。我在想一些事情:

var data = [{"name":"name1","value":"value1"},{"name":"name2","value":"value2"}];

for(var i=0;i<data.length;i++){
  var x = 0;
  if(data[i]['name'] == 'name1'  || data[i]['name'] == 'name2'){

    if (data[i]['name'] == 'name1'){
        console.log('The value for name 1 is: ' + data[i]['value']);
        x++
    }

    if (data[i]['name'] == 'name2'){
        console.log('The value for name 2 is: ' + data[i]['value']);
        x++
    }

    if (x == 2)
    {
        break;
    }

  }
}

这样我们只会遍历数组一次,并且在找到两个时仍然中断。这看起来是最好的方法还是会有更有效的解决方案?

最佳答案

我会在数组上使用 filter 来做到这一点,这样更容易阅读:

var data = [
  { name: 'name1', value: 'value1' },
  { name: 'name2', value: 'value2' }
];

var result = data.filter(function(item) {
  return item.name === 'name1' || item.name === 'name2';
});

关于javascript - 使用 JavaScript 从对象数组中提取高效的名称值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075880/

相关文章:

javascript - 如何通过单选按钮更改元素(img)的位置?

javascript - 如何更改 Google Area Chart 重叠颜色或不透明度?

javascript - 如何让 Internet Explorer Javascript 调试器也暂停捕捉异常?

php - 将元素添加到作为对象属性的数组

javascript - 如何将 Promise 'then' 的值发送到 'catch' ?

javascript - 悬停和连接端点 jsPlumb 的问题

arrays - 如何将json对象的json数组合并到单个json对象

php - 对象数组 php 的数组相交

c - 打印字符串会产生垃圾,即使(我认为)它们是空终止的

c - "EXC_BAD_ACCESS: Unable to restore previously selected frame"错误,数组大小?