[英]How to sort an array from another array in Javascript?
我在模块中创建了两个数组。 该内容已插入下面。
var a = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
var b = [{name:"Fri", value:10}, {name:"Thu", value:5}];
我的要求是我想创建另一个数组,数组的顺序为“ a”。 如果名称不包含在“ b”数组中,则需要将值0推入新数组。
预期结果,
var result = [0, 0, 0, 5, 10, 0, 0];
我的密码,
const result= [];
_.map(a, (el, i) => {
if(b[i] !== undefined) {
if(el === b[i].name) {
result.push(b[i].value);
} else {
result.push(0);
}
}
});
Array#find()
在这里很有帮助
var a = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; var b = [{name:"Fri", value:10}, {name:"Thu", value:5}]; var res = a.map(s => { var bMatch = b.find(o => o.name === s);// returns found object or undefined return bMatch ? bMatch.value : 0; }); console.log(JSON.stringify(res))
你需要查看内部的值b
通过的所有元素迭代b
,为了知道它的存在。
我建议将b
的结构调整为如下形式:
var b = {
"Fri": 10,
"Thu": 5,
}
如果这不是一个选择,那么您可以使用当前结构来执行以下操作:
var a = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; var b = [{name:"Fri", value:10}, {name:"Thu", value:5}]; const result = a.map((aVal) => { var found = 0; // default to 0 if not found // edit: this iteration could be replaced with find in the other answer b.forEach((bVal) => { // try to find the day in b if (bVal.name === aVal) { // if the day is found found = bVal.value; // set the found value to value field of b element } }); return found; }); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.