javascript - 过滤数据并映射唯一接收到的数据
问题描述
我面临一个问题。
var arr = ['VBH', 'KTL', 'PVC', 'IF & AF', 'BC', 'CC&HC', 'UBS', 'FAD&DVD'];
var obj = [
{"materialTypeID":9,"name":"","abbreviation":"UBS","count":1,"duns":0,"plantId":0},
{"materialTypeID":18,"name":null,"abbreviation":"PVC","count":1,"duns":0,"plantId":0},
{"materialTypeID":7,"name":"","abbreviation":"FAD&DVD","count":4,"duns":0,"plantId":0}
];
我希望结果以排序格式显示为 arr 变量显示,例如 VBH 对象或 KTL 对象(如果他们找到的话)。
[
{"materialTypeID":18,"name":null,"abbreviation":"PVC","count":1,"duns":0,"plantId":0},
{"materialTypeID":9,"name":"","abbreviation":"UBS","count":1,"duns":0,"plantId":0},
{"materialTypeID":7,"name":"","abbreviation":"FAD&DVD","count":4,"duns":0,"plantId":0}
]
在java脚本中,我想实现。
谢谢,
解决方案
循环arr
并使用过滤器从obj
. filter
将返回一个新数组,检查这个新数组的长度是否大于 0 ,然后用于push
放置元素
var arr = ['VBH', 'KTL', 'PVC', 'IF & AF', 'BC', 'CC&HC', 'UBS', 'FAD&DVD']
var obj = [{
"materialTypeID": 9,
"name": "",
"abbreviation": "UBS",
"count": 1,
"duns": 0,
"plantId": 0
}, {
"materialTypeID": 18,
"name": null,
"abbreviation": "PVC",
"count": 1,
"duns": 0,
"plantId": 0
}, {
"materialTypeID": 7,
"name": "",
"abbreviation": "FAD&DVD",
"count": 4,
"duns": 0,
"plantId": 0
}]
let sortedArray = [];
arr.forEach(function(item) {
let getElem = obj.filter(function(items) {
return items.abbreviation === item
})
if (getElem.length > 0) {
sortedArray.push(getElem[0])
}
})
console.log(sortedArray)
推荐阅读
- c# - 自定义数字到二进制?
- mongodb - 带有scala的mongodb文档中的嵌套字段
- macos - 在 macOS >= 10.13 中检索 ssh 密码
- ios - 如何使用 Superpowered 库播放多种声音
- c++ - 本地 C++ 插件 InputStream 的可读节点流
- django - 使用 pre_save 信号编辑上传的文件(djangos FileField)
- wpf - WPF中Tab和Ctrl-Tab的区别
- elasticsearch - ONGRFilterBundle - 动态聚合限制过滤器?
- ubuntu - 谁杀死了我的进程?崩溃生成 SIGHUP?
- javascript - 设置 Slate.js