javascript拆分数组取决于名称
javascript split array depends on names
我有一个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);
}
};
console.log(books)打印
["novel", "BookName1", "$20.00"]
["novel", "BookName2", "$24.00"]
["novel", "BookName3", "$34.00"]
["novel", "BookName4", "$31.00"]
["novel", "BookName4", "$38.00"]
如何使名为"splitted"的全局变量等于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 splitted=$.grep(mybooks,function(o){return (o[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
如果您只是想一次收集一个类别,也可以使用filter
函数。
var novels = mybooks.filter(function (book) {
return book[0] === 'novel';
});
一个相当简单的方法是:
var splitted = mybooks.filter(function(book) {return book[0] == 'novel';});
你可以这样概括它:
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);
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- 如何创建数组取决于是否在jQuery中设置了变量
- 我想创建一个长度取决于用户输入的数组,然后尝试找到数组中所有数字的总和
- 将文本字段中的数字与数组中的数字进行比较,具体取决于 PHP 和 jQuery 的选择
- 用户取消选择,然后从数组中删除项目并进行排列,具体取决于它们的选择方式
- javascript拆分数组取决于名称
- 求和特定的数组值取决于其他数组的索引值列表
- AngularJS通过文本输入来过滤对象数组,这取决于所选择的select选项
- 将数据推送到(嵌套)数组,具体取决于现有对象字段