這是我目前實(shí)現(xiàn)邏輯代碼,我該怎么寫?_valueStatu字段名數(shù)組,fieldsDatas二維數(shù)組;
var _fieldsTime = [];
for(var i = 0; i < _valueStatu.length; i++){
for(var j = 0; j < fieldsDatas.length; j++){
if(_valueStatu[i] == fieldsDatas[j]._state){
_fieldsTime.push(fieldsDatas[j]._column)
}
}
}
原答案里也沒什么 es5 寫不出來的東西吧...
var times = fieldsDatas.map(function (field) {
var data = {};
data[field['_state']] = field['_column'];
return data;
})
if (times[_valueStatu[1]]) {
// 存在第二個(gè)時(shí)間
} else {
var offset = Object.keys(times).indexOf(_valueStatu[1]));
var noneNull = Object.keys(times)
.map(function (key, index) {
// 檢查是否已經(jīng)到了第二個(gè)查詢字段之后,因?yàn)槟泐}目中說是紅框中
return index <= offset ? null
: times[key] === null})
.indexOf(true) === -1;
if (noneNull) {
// 都有時(shí)間值
} else {
// 存在 null 值
}
}
先把第二個(gè)數(shù)組轉(zhuǎn)換一下:
let times = fieldsDatas.map(field => {
let data = {};
data[field['_state']] = field['_column'];
return data;
})
然后就可以直接讀取了
if (times[_valueStatu[1]]) {
// 存在第二個(gè)時(shí)間
} else {
let offset = Object.keys(times).indexOf(_valueStatu[1]));
let noneNull = Object.keys(times)
.map((key, index) =>
// 檢查是否已經(jīng)到了第二個(gè)查詢字段之后,因?yàn)槟泐}目中說是紅框中
index <= offset ? null
: times[key] === null)
.indexOf(true) === -1;
/**
* 對(duì) times 數(shù)組進(jìn)行一次映射
* 比如按照此題會(huì)得到
* [null, null, null, null, null,
* true, false, false, false, true]
* 那么這個(gè)數(shù)組中只要存在 true
* 即意味著原來的 times 數(shù)組里 InlabbingTime 之后的時(shí)間里有 null 值,
* 換句話說,如果找不到 true 那么原來的 times 數(shù)組里 InlabbingTime 之后的時(shí)間里全都不為空。
**/
if (noneNull) {
// 都有時(shí)間值
} else {
// 存在 null 值
}
}
解決了,這是答案:
var _fieldsTime_Value = "";
var _fieldsTimeTdoOne = [];
//第一個(gè)為0
if (_fieldsTime[0] === null) {
_fieldsTime_Value = 'none';
}
//兩個(gè)都有值
if (!!_fieldsTime[0] && !!_fieldsTime[1]) {
_fieldsTimeTdoOne = Math.round(parseInt(_fieldsTime[1] - _fieldsTime[0]) /
1000 / 60);
}
//第一個(gè)有值,第二個(gè)沒值
if (!!_fieldsTime[0] && !_fieldsTime[1]) {
var start = fieldsDatas.length;
var none = false
for (let i = 0; i < fieldsDatas.length; i++) {
if (fieldsDatas[i]._state == _valueStatu[1]) {
start = i
break;
}
}
for (let j = start; j < fieldsDatas.length; j++) {
if (fieldsDatas[j]._column) {
none = true
}
}
if (none) {
_fieldsTime_Value = 'none'
} else {
_fieldsTimeTdoOne = Math.round(parseInt(new Date().getTime() - new
Date(_fieldsTime[0]).getTime()) / 1000 / 60);
console.log(_fieldsTimeTdoOne)
}
}
var _valueStatu=['RegisterTime','InlabbingTime'];
var fieldsDatas = [{_state:'re',_column:20161},{_state:'li',_column:20162},{_state:'lii',_column:20163},{_state:'RegisterTime',_column:20164},{_state:'InlabbingTime',_column:null},{_state:'re',_column:null},{_state:'rxe',_column:null},{_state:'rce',_column:null},{_state:'rze',_column:null},{_state:'rce',_column:null},{_state:'red',_column:20166}];
var flag1=false;
var flag2=false;
var _fieldsTime=[];
for(var i = 0; i < _valueStatu.length; i++){
var aj = _valueStatu[i];
for(var j = 0; j < fieldsDatas.length; j++){
var obj = fieldsDatas[j];
var num = obj._state;
var fieldsTime = obj._column;
if(aj == num&&fieldsTime!=null){
_fieldsTime.push(fieldsTime);//若Register時(shí)間不為null,將RegisterTime的時(shí)間加進(jìn)數(shù)組,且是第一次加入
flag1=true;
}
if(flag1&&aj==num&&fieldsTime==null){//第二個(gè)字段名對(duì)應(yīng)上,且沒時(shí)間的話
flag2=true;
}
if(flag2&&fieldsTime!=null){
_fieldsTime.push(fieldsTime);
break;
}
}
}
console.log(_fieldsTime);//若數(shù)組里有兩個(gè)時(shí)間,第一個(gè)就是Register對(duì)應(yīng)的,第二個(gè)Inlabbing為null時(shí)后面的時(shí)間
//若只有一個(gè)的話,那就是Register對(duì)應(yīng)的
不知道對(duì)不對(duì),我這是很粗糙、惡心的代碼,也不知道是否符合你所說的,哈哈
var _fieldsTime = [];
var time = null;
for(var i = 0; i < _valueStatu.length; i++){
for(var j = 0; j < fieldsDatas.length; j++) {
if (_valueStatu[i] == fieldsDatas[j]._state) {
time = fieldsDatas[j]._column;
if (equalToNull(time)) {
return handler(j + 1, ,);
}
_fieldsTime.push(time);
break;
}
}
}
//
function handler (index, allnull, notallnull) {
var length = fieldsDatas.length;
for(var i = index; i < length; i++) {
if (!equalToNull(fieldsDatas[i])) {
notallnull();
return;
}
}
allnull();
}
function equalToNull (value) {
return value == null;
}
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。