簡體   English   中英

如何從Javascript中的另一個數組排序一個數組?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM