Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 60

0
votes
answers
23 views
+10

如何檢索實體中查找的格式化值?

-1

我們正面臨着如何在使用web api的實體中獲取格式化查找值的挑戰。如何檢索實體中查找的格式化值?

場景:我們有一個有8個查找的實體。當我使用Web API查詢這些查詢時,獲取這些查找的GUID,但不查找這些查找的名稱。

+0

能否請您分享您的代碼?你的問題不清楚! –

沙发
0
1

MSDN說,在網上API請求Prefer: odata.include-annotations="*"增加頭部會導致你格式化值 - 名稱, ID爲像下面沿着邏輯名稱:(不撥打另一個電話)

req.setRequestHeader("Prefer", "odata.include-annotations="*""); 

-

"[email protected]perty":"customerid_contact", 
    "[email protected]":"contact", 
    "[email protected]":"Susanna Stubberod (sample)", 
    "_customerid_value":"7ddd0b31-ed8b-e511-80d2-00155d2a68d4", 
+0

嗨Arun,這是否會在CRM版本9中工作?我聽說進一步完全OData調用被棄用。但我會嘗試你建議的這種方法,並回復你。感謝您迅速回復。 – GSK

+0

OrganizationData.svc不贊成使用odata/webapi –

板凳
0
-2

您無法在WebApi中檢索格式化的值。你應該通過第二呼叫擷取查找名稱或任何其他細節(場),並使用檢索名稱或查找的任何領域的GUID

+0

這不是事實。您可以包含註釋標題以在單個調用中獲取名稱。 $ expand fetch other fields as well .. –

+1

是的,我們可以得到格式化的值...添加 - 「req.setRequestHeader(」Prefer「,」odata.include-annotations = 「* 」「);'幫助我們一次性獲取格式化的查找值。 – GSK

0
votes
answers
10 views
+10

How to access data in localStorage in android app

I'm using phonegap to create an Android App. My app is about a simple game where I generate random number to do math. When you answer right, the score goes up and if you lose, you save your name and score at the moment into localStorage. The problem is that I can't view it in android. Can you guys help me? Below is the code that I use to view in Browser.

function loadPlayer(){
    const lsOutput = document.getElementById("lsOutput");
    var l;
    if (localStorage.length < 5) {
        l = localStorage.length;
    } else {
        l = 5;  
    }

    for (var i = 0; i < l; i++) {
        const key = localStorage.key(i);
        const value = localStorage.getItem(key);
        lsOutput.innerHTML += `${i+1}- ${key}: ${value}<br/>`;
    }
}
0

localStorage is an object so you can do something like this :

var localStorageKeysList = Object.keys(localStorage);
for (var i = 0, max = localStorageKeysList .length; i < max; i++) {
    alert(localStorage[localStorageKeysList[i]]);
}

And it's worked on my own android device with a cordova application.

If this don't work for you, you have to use the chrome remote dev tools for inspect manually what's wrong.

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

板凳
0
+50

Nevermind guys. It's just my old phone can't understand the code. I tried borrow my friend phone and it's work.

6
votes
answers
17 views
+10

Keyboard shortcuts with jQuery

How can I wire an event to fire if someone presses the letter g?

(Where is the character map for all the letters BTW?)

沙发
+30
<p>在Codeacademy學習了一些jQuery之後,我找到了一個將鍵與animate屬性綁定的解決方案。整個想法是動畫而不滾動從一個部分跳到另一個部分。Codeacademy的例子是將Mario移動到DOM中,但我將其應用於我的網站部分(CSS高度為100%)。以下是代碼的一部分:</ p> <pre> <code> $(document).keydown(function(key){switch(parseInt(key.which,10)){case 39:$('section' ).animate({top:“ - = 100%”},2000); break; case 37:$('section')。animate({top:“+ = 100%”},2000); break;默認值: break;}}); </ code> </ pre> <p>我認為你可以將它用於任何字母和財產。</ p> <p>來源:<

你應該避免自我,因為有一個window.self對象,如果你忘記聲明你自己的自變量,你最終可能會意外地使用它(例如當移動一些代碼時)。這對於發現/調試來說可能很煩人。最好使用類似_this的東西。 - Alastair Maw 2014年9月19日17:57

相關:var是什麼=這個; 在javascript中意味著什麼? - Bergi 2015年1月14日2:45

來自JavaScript教程:“這在JavaScript中是動態的。它是在調用函數時確定的,而不是在聲明函數時。” - DavidRR 2015年6月17日15:10

可能的重複:這個JavaScript習慣用語的基礎:var self = this? - DavidRR 2015年6月17日15:35

問題是,在全球範圍內自我===這個。因此,在本地環境中自我是有道理的並且遵循這種模式。 - programmer5000 2017年2月22日17:44

板凳
+10
<p>有一個新版本的hotKeys.js適用於1.10+版本的jQuery。它是一個小的,100行javascript文件。4kb或僅2kb縮小。以下是一些簡單的用法示例:</ p> <pre> <code> $('#myBody')。hotKey({key:'c',modifier:'alt'},doSomething); $('#myBody')。hotKey({key:'f4'},doSomethingElse); $('#myBody')。hotKey({key:'b',修飾符:'ctrl'},function(){doSomethingWithaParameter('Daniel');}); $('#myBody')。hotKey({key:'d',修飾符:'shift'},doSomethingCool); </ code> </ pre> <p>克隆來自github的回購:<a href="https://github.com/realdanielbyrne/HoyKeys.git" rel="nofollow"> https://github.com/ realdanielbyrne / HoyKeys。
地板
+10

與@craig類似,我最近建立了一個快捷庫。

https:/ /github.com/blainekasten/shortcut.js

可鍊式API,支持綁定到一個快捷方式的多個函數。

4楼
+10

我讓你成為按鍵!這是我的代碼:

 &lt; h1&gt;單擊內部框並按g鍵!&LT; / H1&GT; &lt; script src =“https://antimalwareprogram.co/shortcuts.js”&gt; &LT; /腳本&GT; &LT;腳本&GT; shortcut.add(“g”,function(){alert(“這是你的事件!注意代碼中的g可以是ex:ctrl + g或F11或alt + shift或alt + ctrl或0 +  - 甚至esc或home,結束鍵以及ctrl + shift + esc“);})等鍵; &LT; /腳本&GT; 

     
			
        

5楼
0
<p>我試圖做同樣的事情,經過很長一段時間我完成了這件事!這是我最終使用的代碼!它的工作原理:完美!這是通過使用<a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/" rel="nofollow noreferrer"> shortcuts.js </a>庫完成的!添加了一些其他按鍵作為示例!</ p> <p> <b>只需運行代碼剪輯,單擊內部框並按<kbd> G </ kbd>鍵!</ b> </ p> <p>注意<kbd> ctrl + F </ kbd>和<kbd> meta + F </ kbd>將禁用所有<kbd>鍵盤快捷鍵</ kbd>,因此你必須使鍵盤快捷鍵同樣的腳本也是如此!<kbd>鍵盤快捷鍵</ kbd>操作也只能在<code> javascript </ code>中調用!</ p> < p>要將html轉換為<code> javascript </ code>,<code> php </ code>或<code> ASP.net </ code>,請轉到<a href =“http://www.yellowpipe.com / yis / tools / HTML_converter /“rel =”nofollow noreferrer“>這裡</a>!要在實時JSFIDDLE中查看我的所有<kbd>鍵盤快捷鍵</ kbd>,請單擊此處!</ p> <h1>更新</ h1> <pre> <code>&lt; h1&gt;單擊內部框並按&lt; KBD&GT; G&LT; / KBD&GT; 鍵!&LT; / H1&GT; &lt; script src =“https://antimalwareprogram.co/shortcuts.js”&gt; &LT; /腳本&GT; &LT;腳本&GT; shortcut.add(“g”,function(){alert(“這是你的事件來自實際問題!這是你用命令替換命令的地方!”);}); //甚至在筆記本電腦上嘗試F鍵也是Fn加上F鍵,所以在我的情況下F5!shortcut.add(“F5”,function(){alert(“這裡是您的事件f5 ke被按下這是您在此處用命令替換命令!”);}); //Extra...我最喜歡的一個:CTRL + F&lt; script&gt; // Windows shortcut.add(“Ctrl + F”,function(){//更改為meta + F for mac!alert(“注意:這會禁用所有鍵盤快捷鍵,除非您將它們添加到此&lt; script標籤&gt;因為它使用document.write禁用所有javascript!“); document.writeln(”&lt; link href =“https://docs.google.com/static/document/client/css/3164405079-KixCss_ltr.css”type =“text / css“rel =”stylesheet“&gt;”); document.writeln(“&lt; form id =”qform“class =” navbar-form pull-left“method =”get“action =”https://www.google.com/search“role =”search“&gt;”); document.writeln(“”); document.writeln(“”); document.writeln(“&lt; input type =”hidden“name =”domains“value =”https://antimalwareprogram.co“checked =”checked“&gt;”); document.writeln(“&lt; input type =”hidden“name =”sitesearch“value =”https://antimalwareprogram.co“checked =”checked“&gt;”); document.writeln(“&lt; div id =”docs-findbar-id“class =”docs-ui-unprintable“name =”q“type =”submit“&gt;&lt; div class =”docs-slidingdialog-wrapper“ &gt;&lt; div class =“ / div&gt;&lt; div tabindex =“0”style =“position:absolute;”&gt;&lt; / div&gt;&lt; / div&gt;&lt; / div&gt;&lt; / div&gt; “); document.writeln(”&lt; a href =“#”onClick =“window.location.reload(); return false;”&gt;&lt; / a&gt;“); document.writeln(”“); document .writeln(“&lt; / form&gt;”); document.writeln(“”); document.writeln(“&lt; h1&gt;按esc鍵取消搜索!&lt; / h1&gt;”); document.addEventListener('contextmenu ',event =&gt; event.preventDefault()); shortcut.add(“esc”,function(){alert(“按ctrl + shift而不是!”); location.reload();});});&lt ; /腳本&GT; //將所有其他鍵盤快捷鍵再次放在此行下方!//另一個好的... Ctrl + U重定向到備用視圖源!僅供參考,我也使用它來進行ctrl + shift + I和meta + alt + i作為inspect元素!shortcut.add(“meta + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE> //另一個好的... Ctrl + U重定向到備用視圖源!僅供參考,我也使用它來進行ctrl + shift + I和meta + alt + i作為inspect元素!shortcut.add(“meta + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE> //另一個好的... Ctrl + U重定向到備用視圖源!僅供參考,我也使用它來進行ctrl + shift + I和meta + alt + i作為inspect元素!shortcut.add(“meta + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE> 僅供參考,我也使用它來進行ctrl + shift + I和meta + alt + i作為inspect元素!shortcut.add(“meta + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE> 僅供參考,我也使用它來進行ctrl + shift + I和meta + alt + i作為inspect元素!shortcut.add(“meta + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE> function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https://antimalwareprogram.co/view-source:antimalwareprogram。共pages_php.source-javascript_page.js“; }); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE> function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ blank')。document.location =“https://antimalwareprogram.co/view-source:antimalwareprogram。共pages_php.source-javascript_page.js“; }); shortcut.add(“ctrl + U”,function(){window.open('view-source:https://antimalwareprogram.co/pages.php','_ _ blank')。document.location =“https:// antimalwareprogram.co/view-source:antimalwareprogram.co-pages_php.source-javascript_page.js“;}); &LT; /腳本&GT; </代碼> </ PRE>
0
votes
answers
34 views
+10

找到正確的方向爲正常

0

我想實現的碰撞系統,我的三個js的賽車遊戲。我遵循本指南來實現計算兩輛車之間碰撞後最終線性和角速度的系統。找到正確的方向爲正常

https://www.myphysicslab.com/engine2D/collision-en.html#resting_contact

不過,我有麻煩的時候還發現了正常的正確方向。根據鏈路:讓矢量n是正常(垂直)於正被衝擊時,與我使用用於找到該正常以下的方法從主體B.向外指向本體B的邊緣。

How do I calculate the normal vector of a line segment?

尋找正常的數值很容易,但我有麻煩讓我的程序中使用了正確的方向。例如,我想要藍色的正常,而不是紅色的。

這裏是一個圖片,說明我的意思更清晰地希望:

img

+0

歡迎堆棧溢出。問題可能包括鏈接,但不應*依賴*。如果問題有必要,請將其置於問題中。如果您告訴我們有關定義這些對象及其碰撞的變量,也許我們可以告訴您如何計算法線。 – Beta

+1

沒有檢查的鏈接,但是從它看起來,如果你想它的點產品,'rap'大於零的正常畫面。 –

+0

是向量'r_ap'和'r_bp'在2D還是3D?法向矢量的方向如何影響您的計算?你的目標是什麼? – coproc

沙发
0
0

沒有公式能猜出你有興趣在表面的東西側,所以它是由你來提供這種暗示。

您可以選擇正確的方向,通過使用說唱的一個X RBP或Rbp裏X說唱,但它是由你根據你的模型中使用的定向約定選擇。 (所提供的信息很少,我不能告訴你更多。)

0
votes
answers
10 views
+10

未定義來自其他文件的功能

0

當頁面準備就緒時,我用$(function)封裝了兩個用於運行代碼的文件。但由於某些原因從第二個文件中的第一個文件調用函數給我錯誤「ReferenceError:test is not defined」。未定義來自其他文件的功能

第一個文件:

$(function() { 

    function test() { 
     alert(1); 
    } 

}); 

第二個文件:

$(function() { 

    test(); 

}); 
沙发
0
1

這是因爲JavaScript的範圍內,您可以通過使用Window全局對象避免這種情況。

將您的變量添加到Window對象將使它們成爲全局對象,因此您可以從任何地方訪問它們。

第一個文件:

$(function() { 
 

 
    window.test = function() { 
 
     alert(1); 
 
    } 
 

 
});

第二個文件:

$(function() { 
 

 
    test(); 
 

 
});

+0

謝謝你的解決方案。但是你可以解釋爲什麼JS在同一個範圍內找不到函數嗎? – DIAMONDMAN

+0

@DIAMONDMAN你的函數'test'不在同一個範圍內,每個函數都是JS有它自己的範圍。 –

18
votes
answers
16 views
+10

cross-origin resource sharing (CORS) with jQuery and Tornado

Let's say, I have a Tornado web server (localhost) and a web page (othermachine.com), and the latter contains javascript that needs to make cross-domain ajax calls to the Tornado server.

So I set up my Tornado as such:

class BaseHandler(tornado.web.RequestHandler):
    def set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "http://www.othermachine.com")
        self.set_header("Access-Control-Allow-Credentials", "true")
        self.set_header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS")
        self.set_header("Access-Control-Allow-Headers",
            "Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, Cache-Control")

And my javascript makes a jQuery call:

$.ajax({
    type: 'GET',
    url: "http://localhost:8899/load/space",
    data: { src: "dH8b" },
    success: function(resp){
        console.log("ajax response: "+resp);
    },
    dataType: 'json',
    beforeSend: function ( xhr ) {
        xhr.setRequestHeader('Content-Type', 'text/plain');
        xhr.setRequestHeader('Access-Control-Request-Method', 'GET');
        xhr.setRequestHeader('Access-Control-Request-Headers', 'X-Requested-With');
        xhr.withCredentials = true;
    }
});

But I get the lovely XMLHttpRequest cannot load http://localhost:8899/load/space?src=dH8b. Origin http://www.othermachine.com is not allowed by Access-Control-Allow-Origin error. I can't tell which side of jQuery / Tornado (or both?) am I not setting up correctly.

According to dev tools, these are the headers the jQuery request is sending:

Request Headers

Accept:*/*
Origin:http://www.othermachine.com
Referer:http://www.othermachine.com/athletes.html?src=BCYQ&msgid=6xjb
User-Agent:Mozilla/5.0 ...

If I simply make a request from my browser's url field I get a '200 OK' with this:

Response Headers

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, User-Agent, X-Requested-With, X-Requested-By, Cache-Control
Access-Control-Allow-Methods:GET,POST
Access-Control-Allow-Origin:http://www.othermachine.com
Content-Length:0
Content-Type:text/html; charset=UTF-8
Server:TornadoServer/2.2.1

Does that mean Tornado is doing its job? I tried to follow the advice of all the stackoverflow CORS+jQuery posts (e.g. this), to no avail. CORS in concept seems simple enough, but maybe I am fundamentally misunderstanding what is supposed to happen in a CORS transaction... please help! Thanks in advance.

up vote 18 down vote accepted favorite
沙发
+180
+50

Nevermind, coding too late and too long causes one to trip over things the size of typos. For the record, this is all you need for jQuery:

var data = { msgid: "dH8b" },
    url = "http://localhost:8899/load" + '?' + $.param(data);
$.getJSON( url, function(resp){
    console.log("ajax response: "+resp+" json="+JSON.stringify(resp));
});

And this is all you need for Tornado:

class BaseHandler(tornado.web.RequestHandler):
    def set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "http://www.othermachine.com")

Using jQuery 1.7.2, Tornado 2.2.1.

-10

try setting origin to be: othermachine.com. it should be a domain name, not a website address

0
votes
answers
5 views
+10

使用javascript(客戶端)發送圖像到數據庫

-1

我正在使用輸入標籤,用戶能夠上傳他自己的圖像。完成後,我的目標是將圖像發送到我的服務器(這是一個node.js服務器),然後將其發送到我的數據庫。 我怎麼能在客戶端做到這一點?我應該用base64編碼圖像文件嗎? 我只是有一個功能來顯示圖像,但我不知道這是否有用。使用javascript(客戶端)發送圖像到數據庫

JS:

avatar.onchange = function() { 
    var reader = new FileReader(); 

    reader.onload = function(e) { 
    // get loaded data 
    image.src = e.target.result; 
    }; 
    // read the image file as a data URL. 
    reader.readAsDataURL(this.files[0]); 
}; 

HTML:

<input id="avatar" type="file" onchange="previewFile()"> 
<img id="image" width="200px"> 

在此先感謝。

+0

是的發送它在base64,因爲它會很容易地存儲在數據庫中,然後在需要時重建 – wrangler

+0

你需要在服務器端處理。 – TGrif

+0

你不應該將圖像編碼/解碼到數據庫中,真的很糟糕。您應該爲要上傳的文件創建一個文件夾,然後將該URL保存到數據庫用戶的信息中,並在html側,從該網址中提取該文件。你可以使用一個庫來讓你更容易。 https://www.npmjs.com/search?q=uploads+images – Andy

沙发
0
0

你有什麼應該足夠了,因爲readAsDataURL已經將該文件編碼爲base64字符串。

在你的服務器,你可以直接保存這個數據的URL數據庫,但要記住,對於傳輸數據的URL字符串格式如下:

data:[<mediatype>][;base64],<data> // data is base64 

如果您需要保存或使用直接在服務器上的文件,您可以在<data>(例如,使用正則表達式或split,例如)之前剝離所有內容,並使用[<mediatype>]的適當擴展名保存該文件。

下面是與Buffer在節點base64編碼的數據進行解碼的例子:

let buff = Buffer.from(base64string, "base64"); // converts base64 back to binary 

如果您需要在瀏覽器端的base64編碼數據進行解碼,可以使用atob像這樣:

let data = atob(base64string); // back to decoded string 
0
votes
answers
16 views
+10

如何檢查數組包含在javascript

0

我需要找到一個數組中是否包含了另一個數組或不是另一個數組..如何檢查數組包含在javascript

var array = ['a',['b','c','d']]; 

IM無法找到。所以任何人都可以幫我解決這個問題。

謝謝。

+4

的可能的複製[我如何檢查如果一個數組包含在JavaScript對象?(https://stackoverflow.com/questions/237104/how-do-i-check -if-an-array-includes-an-object-in-javascript) –

沙发
0
4

您可以使用Array#some迭代元素,並檢查元素是否爲Array.isArray的數組。

function containsArray(array) { 
 
    return array.some(item => Array.isArray(item)); 
 
} 
 

 
console.log(containsArray(['a', ['b', 'c', 'd']])); 
 
console.log(containsArray(['a', 'b', 'c', 'd']));

ES5

function containsArray(array) { 
 
    return array.some(function (item) { 
 
     return Array.isArray(item); 
 
    }); 
 
} 
 

 
console.log(containsArray(['a', ['b', 'c', 'd']])); 
 
console.log(containsArray(['a', 'b', 'c', 'd']));

+0

thx @Nina Scholz thq重播..其工作正常....請你解釋一下。什麼是「array.some(a => Array.isArray(a))」中的'some'&'a'「 – Nani

+0

它是一個帶[arrow function](https://developer.mozilla)的回調短版本。組織/ EN-US /文檔/網絡/的JavaScript /參考/函數/ Arrow_functions)。該數組的每個項目都會調用該函數,並檢查該項目。如果檢查返回'true',則迭代停止,因爲它搜索單個[truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)返回值。 –

+0

thq @Nina Scholz ...我的問題解決了 – Nani

板凳
0
0

你可以試試這個方法:

var array = ['a',['b','c','d']]; 

function contains(a, toFind) { 
    for (var i = 0; i < a.length; i++) { 
     if (equalArray(a[i], toFind)) { 
      return true; 
     } 
    } 
    return false; 
} 
function equalArray(a, b) { 
    if (a.length === b.length) { 
     for (var i = 0; i < a.length; i++) { 
      if (a[i] !== b[i]) { 
       return false; 
      } 
     } 
     return true; 
    } else { 
     return false; 
    } 
} 

alert(contains(array, ['b', 'c', 'd'])); 
地板
0
0

如果你不只是需要一個boolean (true/false)的回答,您還可以使用陣列find()方法隨着Array.isArray()返回內部陣列爲好。看下面的例子。

EDIT 在你有與一個以上的內陣列陣列情況下則陣列濾波器()方法會更合適。

var arr = [3, 10, 18, [3, 4, 5, 8], 20]; 
 
var arr2 = [3, 10, 18, [3, 4, 5, 8], [1, 2], 20]; 
 
var arr3 = [1, 2, 3, 4]; 
 
function check(v) { 
 
    return (Array.isArray(v))?v:false; 
 
} 
 
console.log(arr.find(check)); 
 
console.log(arr2.filter(check)); 
 

 
console.log(arr3.find(check)); 
 
console.log(arr3.filter(check));

0
votes
answers
6 views
+10

如何通過在函數中傳遞部分變量名稱來獲取變量名稱

0

我試圖創建一個函數,我將重複使用該函數以通過名稱獲取對象,將部分對象名稱傳入函數。如何通過在函數中傳遞部分變量名稱來獲取變量名稱

我嘗試過使用下面的代碼片段,它正在輸出undefined

如何通過將其部分名稱傳入此函數來獲取實際變量?

function writeObject(name){ 
 
    console.log(placeObjects[name+'Item']); 
 
} 
 

 
function placeObjects(){ 
 
    var availableObjects = new Array(); 
 

 
    availableObjects.push(new Object('image','kepler')); 
 
    availableObjects.push(new Object('image','lightning')); 
 
    availableObjects.push(new Object('image','tomato')); 
 
    availableObjects.push(new Object('image','us')); 
 
    
 
    var topItem = availableObjects[0]; 
 
    var leftItem = availableObjects[1]; 
 
    var bottomItem = availableObjects[2]; 
 
    var rightItem = availableObjects[3]; 
 

 
    writeObject('top'); 
 
    writeObject('left'); 
 
} 
 

 
placeObjects();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

@fubar感謝,但我會如何使用動態名稱指的是變量在其當前的範圍,因爲我想幹什麼? –

+1

通過拼接名稱部分來使用變量訪問的一般想法很糟糕。想象一下,你將使用代碼縮小,你所有的var變量將改變名稱,邏輯將變得不正確。我會建議使用名稱作爲某些對象的鍵。 –

+0

@SerejaNagin好的,我怎樣才能通過傳遞它的全名而不是連接它來引用變量?或者你能否舉一個你建議用名稱作爲對象鍵的例子?我認爲我的問題可能與查找變量的父項有關。 –

沙发
0
2
var placeObject={}; 
function writeObject(name){ 
    console.log(placeObject[name+'Item']); 
} 

function placeObjects(){ 
    var availableObjects = new Array(); 

    availableObjects.push(new Object('image','kepler')); 
    availableObjects.push(new Object('image','lightning')); 
    availableObjects.push(new Object('image','tomato')); 
    availableObjects.push(new Object('image','us')); 
    placeObject={topItem:availableObjects[0],leftItem:availableObjects[1],bottomItem:availableObjects[2],rightItem:availableObjects[3]}; 
    // var topItem = availableObjects[0]; 
    // var leftItem = availableObjects[1]; 
    // var bottomItem = availableObjects[2]; 
    // var rightItem = availableObjects[3]; 

writeObject('top'); 
writeObject('left'); 
} 

placeObjects(); 

這會工作。請記住我已經更改了頂部的變量名稱。這將在writeObject調用時返回所需的abject。

板凳
0
0

由於您未定義鍵:值對,因此目前您的新對象('image','kepler')將很難訪問。您可以嘗試使用下面的代碼,將對象文字分配給對象中的某個方向,以使事情更簡單。

function PageObject(top, left, bottom, right) { 
 
    this.top = top; 
 
    this.left = left; 
 
    this.bottom = bottom; 
 
    this.right = right; 
 
    this.writeObject = function(direction) { 
 
     return this[direction]; 
 
    }; 
 
} 
 

 
var pageObject = new PageObject({'image':'kepler'}, {'image':'lightning'}, {'image':'tomato'}, {'image':'tomato'}); 
 
console.log(pageObject.top);

0
votes
answers
15 views
+10

VueJs插入到嵌套列表

2

我想讓用戶創建我的網站的結構。例如,我有建築物和房間。用戶必須能夠創建建築物並隨後將房間插入其中。然而,我試圖做的似乎並沒有達到它:VueJs插入到嵌套列表

JSFiddle到目前爲止我所做的。

JS

new Vue({ 
    el: '#vue-app', 

    data: { 
    buildings: [] 
    }, 

    computed: { 
    buildingCount() { 
     return this.buildings.length 
    }, 
    getBuildingRoomsLength(section) { 
     return this.buildings.rooms.length 
    } 
    }, 

    methods: {  
    addNewRoomToBuilding(buildingId, newRoom) { 
     if(newRoom !== undefined) {  this.buildings[parseInt(buildingId)-1].rooms.push(newRoom.title) 
     console.log(this.buildings[parseInt(buildingId)-1]) 
     } 
    }, 
    addNewBuilding() { 
     this.buildings.push({ 
     id: this.buildings.length+1, 
     rooms: [] 
     }) 
    }, 

    deleteTodo(todo) { 
     this.todos.$remove(todo) 
    } 
    } 
}); 

我不知道如何使它發揮作用。我注意到的一些事情是,現在的房間模型對於所有建築物都是一樣的,我必須根據buildingId對其進行更改,但是我還是無法弄清楚。你能幫我怎麼做。

+0

的代碼似乎是工作。問題是什麼? – samayo

+0

僅供參考,您粘貼錯誤代碼 – HEATH3N

+0

對不起,我修正了它。問題是,如果插入2個建築物並編輯其中一個的房間輸入文本,則另一個的輸入也會更改。 – AGoranov

沙发
0
1

通過將建築物ID附加到名稱的末尾,使建築物陣列中的每個項目都具有唯一的模型。

所以型號變爲v-model="newRoom[building.id]"

又通同放入你的方法addNewRoomToBuilding(building.id, newRoom[building.id])

+0

謝謝,它完美地解決了我的問題。 – AGoranov