javascript拆分数组取决于名称

javascript拆分数组取决于名称,javascript,jquery,Javascript,Jquery,我有一个mybooks数组,我想按书的类别将其分开 var mybooks = [ ['novel','BookName1','$20.00'], ['novel','BookName2','$24.00'], ['novel','BookName3','$34.00'], ['novel','BookName4','$31.00'], ['novel','BookName4','$38.00'], ['Biograph','BookName5',

我有一个mybooks数组,我想按书的类别将其分开

var mybooks = [
    ['novel','BookName1','$20.00'],
    ['novel','BookName2','$24.00'],
    ['novel','BookName3','$34.00'],
    ['novel','BookName4','$31.00'],
    ['novel','BookName4','$38.00'],
    ['Biograph','BookName5','$28.00'],
    ['Biograph','BookName6','$48.00'],
    ['Biograph','BookName7','$50.00']
  ];
我是这样做的

 for(i=0; i<mybooks.length; i++){
        if ((mybooks[i][0]) == 'novel'){
        var books = mybooks[i];
        console.log(books);
       }
      };

如何使名为“splited”的全局变量等于
books

生成函数返回books:

var makeBooks = function(mybooks, type){
  var books=[];
  for(var i=0; i<mybooks.length; i++){
      if ((mybooks[i][0]) === type){
        books.push(mybooks[i]);
      }
  };
  return books;
}

window.splitted = makeBooks(mybooks, 'novel');
var makeBooks=函数(mybooks,类型){
var账簿=[];

对于(var i=0;i生成函数返回书籍:

var makeBooks = function(mybooks, type){
  var books=[];
  for(var i=0; i<mybooks.length; i++){
      if ((mybooks[i][0]) === type){
        books.push(mybooks[i]);
      }
  };
  return books;
}

window.splitted = makeBooks(mybooks, 'novel');
var makeBooks=函数(mybooks,类型){
var账簿=[];

对于(var i=0;i您是否尝试按图书类别拆分数组?如果是这样,则最好看一看,而不是按图书类别拆分数组?如果是这样,则最好看一看,而不是按图书类别拆分数组。嗯,我不确定最终结果是什么,但您可以这样做:

var splitted = mybooks.reduce(function (result, book) {
    var cat = book[0];

    if (!result[cat]) {
        result[cat] = [book];
    } else {
        result[cat].push(book);
    }

    return result;
}, {});

console.log(splitted); //all books splitted by categories
console.log(splitted.novel); //array of novels
console.log(splitted.Biograph); //array of Biograph
var byType = function(type) {return function(book) {return book[0] == type;};};
var bios = mybooks.filter(byType('Biograph'));
如果您只想一次收集一个类别,还可以使用
过滤器
功能

var novels = mybooks.filter(function (book) {
    return book[0] === 'novel';
});

嗯,我不确定你到底想要什么作为最终结果,但你可以这样做:

var splitted = mybooks.reduce(function (result, book) {
    var cat = book[0];

    if (!result[cat]) {
        result[cat] = [book];
    } else {
        result[cat].push(book);
    }

    return result;
}, {});

console.log(splitted); //all books splitted by categories
console.log(splitted.novel); //array of novels
console.log(splitted.Biograph); //array of Biograph
var byType = function(type) {return function(book) {return book[0] == type;};};
var bios = mybooks.filter(byType('Biograph'));
如果您只想一次收集一个类别,还可以使用
过滤器
功能

var novels = mybooks.filter(function (book) {
    return book[0] === 'novel';
});

一个相当简单的方法是:

var splitted = mybooks.filter(function(book) {return book[0] == 'novel';});
你可以这样概括:

var splitted = mybooks.reduce(function (result, book) {
    var cat = book[0];

    if (!result[cat]) {
        result[cat] = [book];
    } else {
        result[cat].push(book);
    }

    return result;
}, {});

console.log(splitted); //all books splitted by categories
console.log(splitted.novel); //array of novels
console.log(splitted.Biograph); //array of Biograph
var byType = function(type) {return function(book) {return book[0] == type;};};
var bios = mybooks.filter(byType('Biograph'));

一个相当简单的方法是:

var splitted = mybooks.filter(function(book) {return book[0] == 'novel';});
你可以这样概括:

var splitted = mybooks.reduce(function (result, book) {
    var cat = book[0];

    if (!result[cat]) {
        result[cat] = [book];
    } else {
        result[cat].push(book);
    }

    return result;
}, {});

console.log(splitted); //all books splitted by categories
console.log(splitted.novel); //array of novels
console.log(splitted.Biograph); //array of Biograph
var byType = function(type) {return function(book) {return book[0] == type;};};
var bios = mybooks.filter(byType('Biograph'));

这将按类型排列书本数组:

var mybooks = [
    ['novel','BookName1','$20.00'],
    ['novel','BookName2','$24.00'],
    ['novel','BookName3','$34.00'],
    ['novel','BookName4','$31.00'],
    ['novel','BookName4','$38.00'],
    ['Biograph','BookName5','$28.00'],
    ['Biograph','BookName6','$48.00'],
    ['Biograph','BookName7','$50.00']
  ];

var library = {}

for(i=0; i<mybooks.length; i++){
    var bookType = mybooks[i][0];
    if (typeof library[bookType]=='undefined')  
       library[bookType] = [];
    library[bookType].push(mybooks[i]);
}

console.log(library);
var mybooks=[
[“小说”、“书名1”、“20.00美元],
[“小说”、“书名2”、“24.00美元],
[“小说”、“书名3”、“34.00美元],
[“小说”、“书名4”、“31.00美元],
[“小说”、“书名4”、“38.00美元],
[‘传记’、‘书名5’、‘28.00美元’],
[‘传记’、‘书名6’、‘48.00美元’],
[‘传记’、‘书名7’、‘50美元’]
];
变量库={}

对于(i=0;i,这应该按类型排列您的书籍数组:

var mybooks = [
    ['novel','BookName1','$20.00'],
    ['novel','BookName2','$24.00'],
    ['novel','BookName3','$34.00'],
    ['novel','BookName4','$31.00'],
    ['novel','BookName4','$38.00'],
    ['Biograph','BookName5','$28.00'],
    ['Biograph','BookName6','$48.00'],
    ['Biograph','BookName7','$50.00']
  ];

var library = {}

for(i=0; i<mybooks.length; i++){
    var bookType = mybooks[i][0];
    if (typeof library[bookType]=='undefined')  
       library[bookType] = [];
    library[bookType].push(mybooks[i]);
}

console.log(library);
var mybooks=[
[“小说”、“书名1”、“20.00美元],
[“小说”、“书名2”、“24.00美元],
[“小说”、“书名3”、“34.00美元],
[“小说”、“书名4”、“31.00美元],
[“小说”、“书名4”、“38.00美元],
[‘传记’、‘书名5’、‘28.00美元’],
[‘传记’、‘书名6’、‘48.00美元’],
[‘传记’、‘书名7’、‘50美元’]
];
变量库={}

对于(i=0;iThanks!但此案例需要是数组:-)谢谢!但此案例需要是数组:-)请确保也查看我的解决方案。它可能会教您一些JavaScript功能;)请确保也查看我的解决方案。它可能会教您一些JavaScript功能;)