我在表格和 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/