[英]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.