繁体   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