javascript - 无论顺序如何,如何获取数组值和对象键值匹配
问题描述
在值数组中
var legends =['some','key', 'value'];
带有相应 obj 值的图表;
var graph = {
orgid: ['123', '123556', '456', '345', '2345'],
some: [1500, 1500, 1500, 1500, 1500],
key: [900, 900, 900, 900, 900],
value: [1072, 1373, 946, 715, 276]
};
我想提取仅包含要插入到另一个数组中的数组中提到的键值的图形
我已经执行了代码,但它仅在键的顺序与 obj 中提到的顺序相同时才有效
es5方式
var grphFilter = [];
var countRaw = 0;
for (var key in graph) {
if (key === legends[count] ) {
grphFilter.push(graph[key]);
count++;
}
}
es6方式
let grphFilter = [];
let count = 0;
const result = Object.entries(graph).forEach(function([key, value]) {
if (key === legends[count]) {
grphFilter.push(value);
count++
}
})
但它不适用于不按顺序排列的键。
var legendsNotOrder =['key', 'some', 'value'];
无论图例数组中值的顺序如何,结果都应该是最终结果,无论是它legends
还是legendsNotOrder
最后结果
var graphfiltered = [
[1500, 1500, 1500, 1500, 1500],
[900, 900, 900, 900, 900],
[1072, 1373, 946, 715, 276]
];
解决方案
您可以遍历数组并仅从对象中获取所需的属性值。
var legends =['some','key', 'value'];
var graph = {orgid: ['123', '123556', '456', '345', '2345'],some: [1500, 1500, 1500, 1500, 1500],key: [900, 900, 900, 900, 900],value: [1072, 1373, 946, 715, 276]};
let filteredGraph = legends.map( cur => graph[cur])
console.log(filteredGraph)
//In case you have keys in legend which are not available in graph you can use below code
let filteredGraph = legends.filter( cur => graph[cur])
推荐阅读
- python - 预期类型 Union[str, bytes, int] 但得到 Sequence[Union[int, float, str]]
- chart.js - 在条形图中的列之间添加空格。图表
- g++ - C++ 标准库符号在运行时绑定到其他库
- javascript - React Native 标题右侧图标
- wordpress - 使用 Beautifulsoup 获取多个 url - 在 wp-plugins 中收集元数据 - 使用时间戳排序
- scala - 使用 scala 的 Spark 流式 kafka
- mysql - Rails where 查询
- laravel - 500(内部服务器错误)与 Laravel 中的推送器
- javascript - StencilJS 和 SVG - 一些 SVG 元素不渲染?
- html - 如何保持相同的位置