【问题标题】:Add 2D array item to new array based on string variable基于字符串变量将二维数组项添加到新数组
【发布时间】:2021-02-15 05:31:52
【问题描述】:

收到的是数组的输入:

var fruits = [["fuji", "apple"], ["gala", "apple"], ["navel", "orange"], ["valencia", "orange"]]

我创建了空白数组:

var apple = [] 
var orange = []

我想通过将字符串从第二个数组项中取出并推送到数组来将水果排序到它们的数组中。有没有办法将fruits[i][1] 中的字符串值与同名数组(苹果/橙子)关联起来?

for (var i = 0; i < fruits.length; i++) {
  fruits[i][1].push(fruits[i])  // not a thing
  }

期望的输出:

apple == [["fuji", "apple"], ["gala", "apple"]]
orange == [["navel", "orange"], ["valencia", "orange"]]

【问题讨论】:

    标签: javascript arrays multidimensional-array


    【解决方案1】:

    你可以使用Array.prototype.filter()

    var apple = fruits.filter((ele) => ele[1] === "apple");
    var orange = fruits.filter((ele) => ele[1] === "orange");
    

    【讨论】:

      【解决方案2】:

      使用 item 中的第二个元素编写 sort compare 方法。

      var fruits = [
        ["fuji", "apple"],
        ["gala", "apple"],
        ["navel", "orange"],
        ["valencia", "orange"],
      ];
      
      const sorted = (arr, key) => {
        return [...arr].sort(([, a], [, b]) => {
          return a === key ? -1 : 1;
        });
      };
      
      console.log(sorted(fruits, "apple"));
      console.log(sorted(fruits, "orange"));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-12
        • 2019-06-10
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 2019-01-23
        • 2019-07-23
        • 1970-01-01
        相关资源
        最近更新 更多