为了账号安全,请及时绑定邮箱和手机立即绑定

将一个字符串从一个数组中的一个数组(带有字符串和数字)推送到一个新数组,具体取决于数字的值

将一个字符串从一个数组中的一个数组(带有字符串和数字)推送到一个新数组,具体取决于数字的值

慕桂英3389331 2021-12-02 19:28:03
我想尽可能多地做自己。首先,我如何从数组中的数组中调用一个元素。那么我如何将一个元素从一个数组中的一个数组推送到一个新数组。最终我想根据年龄组创建新数组。0-20、21-30、31-40、41-50、51-60。打印带有名称和年龄的新数组。const arr1 = ['Sarah',37];const arr2 = ['Mike', 32];const arr3 = ['Bill', 25];const arr4 = ['Chris', 24];const arr5 = ['Joe', 44];const arr6 = ['Jesse', 33];const arr7 = ['Jon', 28];const arr8 = ['Michael', 55];const arr9 = ['Jill', 59];const arr10 = ['Helia', 4];const mainArr = [arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9, arr10];const newArr = [];const age3040 = []newArr.push(mainArr[[0][0]]);const checkAge = (ageCheck) => {    if (arr1[1] > 30 || arr1[1] < 41) {   age3040.push(arr1[0]);}}console.log(arr1);console.log(newArr);console.log(age3040);
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

您在这里面临的主要问题是,您无法在迭代列表时创建新的人群,并且被迫对新变量进行硬编码,例如const age3040 = []. 通常,您会使用一个对象来实现这一点,这样您就可以最终得到一个这样的对象。


const ranked = {

  "20": ["Helia"],

  "30": ["Bill", "Jon"],

  // and so on

您可能会认为这是一个计数问题。在这种情况下,剩下要做的唯一一件事就是在计算出您需要什么后弄清楚人们属于哪个类别。


const ranked = {}


for (const [name, age] of mainArr) {

  // a function that decides what key to give the person in that age bracket

  const tier = decideTier(age)

  const people = ranked[tier]

  if (!people) {

    // if a previous person with this age has not been seen before you'll

    // have to create a new array with the person in it so that you can

    // push new names in it the next time

    ranked[tier] = [name]

  } else {

    people.push(name)

  }

}


console.log(ranked["20"])

你在这里寻找的东西的一个例子叫做groupBybtw 并且可以在像Ramda这样的库中找到。


查看完整回答
反对 回复 2021-12-02
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您的代码中存在三个问题

  1. ageCheck 根本没有使用

  2. || 应该 &&

  3. 函数checkAge没有被调用所以你不会得到结果

给你举个例子,希望对你有帮助。

const arr1 = ['Sarah', 37];

const arr2 = ['Mike', 32];

const arr3 = ['Bill', 25];

const arr4 = ['Chris', 24];

const arr5 = ['Joe', 44];

const arr6 = ['Jesse', 33];

const arr7 = ['Jon', 28];

const arr8 = ['Michael', 55];

const arr9 = ['Jill', 59];

const arr10 = ['Helia', 4];


const mainArr = [arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9, arr10];


const reuslt = [{

    range: '0-20',

    names: []

}, {

    range: '21-30',

    names: []

}, {

    range: '31-40',

    names: []

}, {

    range: '41-50',

    names: []

}, {

    range: '51-60',

    names: []

}];


for (let index = 0; index < mainArr.length; index++) {

    const item = mainArr[index];


    if (item[1] > 0 && item[1] <= 20) {

        reuslt[0].names.push(item[0]);

    } else if (item[1] <= 30) {

        reuslt[1].names.push(item[0]);

    } else if (item[1] <= 40) {

        reuslt[2].names.push(item[0]);

    } else if (item[1] <= 50) {

        reuslt[3].names.push(item[0]);

    } else if (item[1] <= 60) {

        reuslt[4].names.push(item[0]);

    }

}


console.log(reuslt);


查看完整回答
反对 回复 2021-12-02
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

使用 a if else if,你应该使用&&not||


像这样:


let age020 = []

let age2030 = []

let age3040 = []

let age4050 = []

let age5060 = []


mainArr.forEach(arr =>{

  const age = arr[1]

if(age >= 0 && age <= 20){

    age020.push(arr)

}else if(age >= 30 && age <= 40){

    age3040.push(arr)

}

//... do same to other age range 

})


console.log(age020)

console.log(age3040)


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信