js運算元組中資料排列組合
需求: 將
var priceOption = {
age:[18,20],
sex:[‘男’,’女’],
hc:[‘2-6人’,’7-8人’]
}
上述物件中age與sex及hc自由組合:得到如下形式:
{age: 18, sex: “男”, hc: “2-6人”}
{age: 18, sex: “男”, hc: “7-8人”}
{age: 18, sex: “女”, hc: “2-6人”}
{age: 18, sex: “女”, hc: “7-8人”}
{age: 20, sex: “男”, hc: “2-6人”}
{age: 20, sex: “男”, hc: “7-8人”}
{age: 20, sex: “女”, hc: “2-6人”}
{age: 20, sex: “女”, hc: “7-8人”}
程式碼如下
// 需要引入lodash.
var priceFactor=['age','sex','hc']
var priceOption = {
age:[18,20],
sex:['男','女'],
hc:['2-6人','7-8人']
}
function plzhFirst(datas){
var array = [];
var propObj = getFirstProp(datas);
var propName= propObj.name;
var propValue=propObj.value;
if(_.isArray(propValue)){
for(var i = 0 ;i<propValue.length;i++){
var newObj = {};
newObj[propName]=propValue[i];
array.push(newObj);
}
}else{
var newObj ={};
newObj[propName]=propValue;
array.push(newObj)
}
for(var i=1;i<priceFactor.length;i++){
array = plzh(array,priceOption[priceFactor[i]],priceFactor[i])
}
return array
}
function getFirstProp(obj){
var propObj = {}
for(var i in obj){
propObj.name=i;
propObj.value=obj[i];
return propObj;
}
}
function plzh(arr1,arr2,nextAttr){
var array = [];
for(var i=0;i<arr1.length;i++)
{
var obj = arr1[i];
for(var j=0;j<arr2.length;j++)
{
var newObj= _.cloneDeep(obj);
var v2 = arr2[j];
newObj[nextAttr]=v2;
array.push(newObj);
};
};
return array;
}
var endData =console.log(plzhFirst(priceOption));
/*根據表格資料合併成var priceOption = {
age:[18,20],
sex:['男','女'],
hc:['2-6人','7-8人']
}形式*/
function getSZ(){
var defaultObj={}
for(var i = 0 ;i<endData.length;i++){
var defaultObj = combineObjectToOne(defaultObj,endData[i])
}
console.log(defaultObj);
}
getSZ();
function combineObjectToOne(object1,object2){
var nextObj =_.cloneDeep(object1);
for(var i in object2){
var oldValue = nextObj[i];
var nextValue = object2[i];
/*是陣列*/
if(_.isArray(oldValue) && oldValue.indexOf(nextValue)==-1){
oldValue.push(nextValue)
}else if ((_.isString(oldValue)||_.isNumber(oldValue))&&oldValue!==nextValue){
nextObj[i]=new Array(oldValue,nextValue)
}else if(oldValue==null||oldValue==undefined){
nextObj[i]=object2[i]
}
}
return nextObj;
}
相關文章
- js 方法(運算元組為主JS
- JavaScript 資料處理 - 運算元組JavaScript
- 排列組合
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- JavaScript運算元組JavaScript
- 【數學】組合數學 - 排列組合
- 組合數學筆記-排列與組合筆記
- vue的資料劫持以及運算元組的坑Vue
- 楊輝三角(組合數)+排列組合
- 字串排列組合問題字串
- acm-排列組合學習筆記(更新中)ACM筆記
- 無重複字串的排列組合字串
- 常見規格排列組合問題
- 組合資料型別資料型別
- (資料科學學習手札99)掌握pandas中的時序資料分組運算資料科學
- 計組之資料運算:9、浮點數的表示
- 在C#中對列舉進行位運算--列舉組合C#
- 【Python】組合資料型別Python資料型別
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- python:用pyinstaller做個排列組合的小工具Python
- 遞迴演算法實踐---實現排列組合遞迴演算法
- 回溯問題Python框架總結——排列組合問題Python框架
- python資料結構元組tuplePython資料結構
- python資料型別 列表+元組Python資料型別
- Python資料型別(元組tuple)Python資料型別
- 什麼是組合資料型別?Python組合資料型別分為幾類?資料型別Python
- js設計模式–組合模式JS設計模式
- js設計模式--組合模式JS設計模式
- js 組合繼承詳解JS繼承
- Spring Cloud資料流中的組合函式支援SpringCloud函式
- python組合資料型別(集合)Python資料型別
- 資料型別· 第1篇《元組和列表的效能分析、命名元組》資料型別
- CF1796C C. Maximum Set 題解 排列組合
- 增補部落格 第十六篇 python 排列組合序列Python
- 在 MySQL 中,如何計算一組資料的中位數?MySql
- Flink - 運算元鏈合併方法
- Python基本資料型別之元組Python資料型別
- js的curry和函式組合JS函式