繁体   English   中英

javascript 将一个数组的一些元素排序到另一个数组中

[英]javascript sort some elements of an array into other array

对于一个项目,我必须对包含字符串和数字的数组进行排序。 该字符串用作应将数字存储到哪个数组中的指示符。

let myArray = [22, 'talk', 31, 'perfo', 35, 'init', 42, 'talk']
let talk = []
let perfo = []
let init = []

for (let i = 0; i < myArray.length; i + 2) {
    if (myArray[i + 1] == 'talk') {
        talk.push(myArray[i])
    } else if (myArray[i + 1] == 'perfo') {
        perfo.push(myArray[i])
    } else if (myArray[i + 1] == 'init') {
        init.push(myArray[i])
    } else {}
}

预期结果:

talk [22, 42], perfo [35], init [42]

但不知何故,它似乎甚至没有通过 for 循环。

您可以使用 object 和所需的 arrays 并将值推送给它。

 let data = [22, 'talk', 31, 'perfo', 35, 'init', 42, 'talk'], talk = [], perfo = [], init = [], temp = { talk, perfo, init }, i = 0; while (i < data.length) { let [value, key] = data.slice(i, i += 2); temp[key].push(value); } console.log(talk); console.log(perfo); console.log(init);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

object 与数组相同,但它不是以数字作为索引,而是有一个字符串,因此我们可以使用 object 来重构初始数组。

 let myArray = [22, 'talk', 31, 'perfo', 35, 'init', 42, 'talk'] let arrays = {} for (let i = 0; i < myArray.length; i+=2) { const arrayName = myArray[i+1]; if (arrays[arrayName]) { arrays[arrayName].push(myArray[i]) } else { arrays[arrayName] = [myArray[i]] } } console.log(arrays); // [object Object] { // init: [35], // perfo: [31], // talk: [22, 42] // }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM