我正在将对象推入一个数组中,并且在某个时刻,一组不同的对象被推入数组中。我遇到的问题是在不同对象的第一个实例中返回一个值。
例如:假设我的最终数组如下所示:
// receive Code!
private byte[] indexBuffer = new byte[sizeof(UInt16)];
private int indexSize = sizeof(UInt16);
public async void receiveData(TcpClient client) {
var result = await Task.Run(() => {
try {
int checkSum = client.Client.Receive(indexBuffer, 0, indexBuffer.Length, SocketFlags.None);
if (checkSum != indexSize) return null;
int packageSize = BitConverter.ToUInt16(indexBuffer, 0);
Console.WriteLine(packageSize);
var recData = new Byte[packageSize];
checkSum = client.Client.Receive(recData, 0, packageSize, SocketFlags.None);
if (checkSum != packageSize) return null;
return Encoding.ASCII.GetString(recData);
} catch(Exception ex) {
Console.WriteLine(ex.Message);
return "-1";
}
});
// blabla do something
Console.WriteLine(result);
//---------------------
if (client.Connected)
receiveData(client);
}
如何遍历数组并返回第一个id的值。所以这种情况应该返回1.
答案 0 :(得分:1)
您可以使用Array#find()
var myArray = [
{name:'some name 1', value:'some value 1'},
{name:'some name 2', value:'some value 2'},
{name:'some name 3', value:'some value 3'},
{name:'new name 1', standout:'this stands out 1', id:1},
{name:'new name 2', standout:'this stands out 2', id:2},
{name:'new name 3', standout:'this stands out 3', id:3},
];
var obj = myArray.find(o => o.id),
id= obj ? obj.id : 'None';
console.log('First Id is: ', id)
答案 1 :(得分:0)
当您达到for
出现的条件时,您可以使用break
循环和id
遍历您的收藏集:
var myArray = [
{name:'some name 1', value:'some value 1'},
{name:'some name 2', value:'some value 2'},
{name:'some name 3', value:'some value 3'},
{name:'new name 1', standout:'this stands out 1', id:1},
{name:'new name 2', standout:'this stands out 2', id:2},
{name:'new name 3', standout:'this stands out 3', id:3},
];
function getFirstId(arr) {
var id;
for (var i = 0; i < arr.length; i++) {
if (arr[i].id) {
id = arr[i].id;
break;
}
}
return id;
}
getFirstId(myArray); //1
答案 2 :(得分:0)
您也可以使用ES6 syntex,即Array.find:
function findFirstId(myArray){
return myArray.find((obj) => obj.id !== undefined).id;
}
有关Array.find的更多信息:https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/find
答案 3 :(得分:0)
如果您对不同对象的定义是这些对象具有不同的属性,则以下代码可能对您有所帮助。
Object.keys()方法返回给定对象拥有的可枚举属性的数组
var x = [];
for (var i = 0; i < myArray.length; i++) {
x.push(Object.keys(myArray[i]));
}
var gotit;
for (i = 1; i < x.length; i++) {
if (x[0].toString() != x[i].toString()) {
gotit = x[i];
break;
}
}
console.log(gotit);
答案 4 :(得分:0)
检查出来:
//<![CDATA[
// external.js
var doc, bod, C, E, inArray, FirstOfKind, old = onload; // for use on other loads
onload = function(){
if(old)old(); // change var name if using technique on other pages
doc = document; bod = doc.body;
C = function(tag){
return doc.createElement(tag);
}
E = function(id){
return doc.getElementById(id);
}
inArray = function(v, a){
for(var i=0,l=a.length; i<l; i++){
if(a[i] === v){
return true;
}
}
return false;
}
FirstOfKind = function(objsArray){
function same(o1, o2){
var v;
for(var i in o1){
if(!o2.hasOwnProperty(i)){
return false;
}
}
return true;
}
for(var a=[0],i=0,q=1,l=objsArray.length; q<l; i++,q++){
if(!same(objsArray[i], objsArray[q]))a.push(q);
}
this.getIndexes = function(){
return a;
}
this.getFirsts = function(){
for(var i=0,f=[],l=a.length; i<l; i++){
f.push(objsArray[a[i]]);
}
return f;
}
}
var myArray = [
{name:'some name 1', value:'some value 1'},
{name:'some name 2', value:'some value 2'},
{name:'some name 3', value:'some value 3'},
{name:'new name 1', standout:'this stands out 1', id:1},
{name:'new name 2', standout:'this stands out 2', id:2},
{name:'new name 3', standout:'this stands out 3', id:3}
]
var fk = new FirstOfKind(myArray), fi = E('fi'), fo = E('fo');
var fI = fk.getIndexes(), fO = fk.getFirsts();
for(var i=0,li,lo,ff,oa=[],l=fI.length; i<l; i++){
li = C('li'); li.innerHTML = fI[i]; fi.appendChild(li);
lo = C('li'); ff = fO[i];
for(var q in ff){
oa.push("'"+q+"' : '"+ff[q]+"'");
}
lo.innerHTML = '{'+oa.join(', ')+'}'; fo.appendChild(lo);
}
}
//]]>
&#13;
/* external.css */
html,body{
padding:0; margin:0;
}
body{
background:#000; overflow-y:scroll;
}
.main{
width:936px; background:#fff; padding:20px; margin:0 auto;
}
&#13;
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8' />
<meta name='viewport' content='width=device-width' />
<title>FirstOfKind</title>
<link type='text/css' rel='stylesheet' href='external.css' />
<script type='text/javascript' src='external.js'></script>
</head>
<body>
<div class='main'>
<div id='output'>
<ul>
<li>.getIndexes()</li>
<li><ul id='fi'></ul></li>
<li>.getFirsts()</li>
<li><ul id='fo'></ul></li>
</ul>
</div>
</div>
</body>
</html>
&#13;