JavaScript数组对象问题
我只是一个JavaScript初学者,我遇到了如何从这个数组中检索数据的问题。它有效吗? 以下是数组对象的控制台输出:JavaScript数组对象问题,javascript,arrays,Javascript,Arrays,我只是一个JavaScript初学者,我遇到了如何从这个数组中检索数据的问题。它有效吗? 以下是数组对象的控制台输出: [] 0: Item {id: 0, symbol: "VBIV", boughtDate: "2018-07-22", company: "VBI Vaccines Inc."} 1: Item {id: 1, symbol: "R", boughtDate: "2018-07-22", company: "Ryder System Inc."} 2: Item {id: 2
[]
0: Item {id: 0, symbol: "VBIV", boughtDate: "2018-07-22", company: "VBI Vaccines Inc."}
1: Item {id: 1, symbol: "R", boughtDate: "2018-07-22", company: "Ryder System Inc."}
2: Item {id: 2, symbol: "R", boughtDate: "2018-07-22", company: "Ryder System Inc."}
length: 3
__proto__: Array(0)
如果知道要检索的对象的索引,只需使用array[index] 如果您不知道索引,但知道要使用的id:
array.find(element => element.id === id)
例如,我想获得id:2公司名称 要获取此值,您需要使用括号[]语法获取数组索引2处的对象,并使用点从该对象获取id属性。语法 或者将对象从数组保存到变量,然后获取其属性:
var myObj = myArray[2]
console(myObj.id) //=> 2
console(myObj.company) //=> "Ryder System Inc."
我很高兴知道这是否能比现有的更快,并符合您的要求
Array.prototype.get = function(key, value, start = 0, revert = false, restart = true) {
let __forward = function(index, limit, array, key, value) {
let ele = null;
while (index < limit && (ele = array[index])[key] !== value) index++;
return {index: index, value: ele};
},
__backward =function(index, limit, array, key, value) {
let ele = null;
while (index > limit && (ele = array[index])[key] !== value) index--;
return {index: index, value: ele};
};
if (!(typeof key !== "string" || start < 0 || !(start < this.length) || typeof this[0] !== "object")) {
let length = this.length, result;
/* no revert: forward direction, until first match */
if (!revert) {
result = __forward(start, length, this, key, value);
if (result.index < length)
return result;
else if (restart && start > 0) {
result = __forward(0, start, this, key, value);
if (result.index < start)
return result;
}
} else {
/* revert: backward direction, until last match */
result = __backward(start, -1, this, key, value);
if (result.index > -1)
return result;
else if (restart && start < length-1) {
result = __backward(length-1, start, this, key, value, true);
if (result.index > start)
return result;
}
}
}
return {index: -1, value: null};
}
作为一项常规职能:
window.OO7array_get = function(key, value, start = 0, revert = false, restart = true) {
/* same as above script, dont worry feel free to copy and paste here */
};
此数组的预期输出是什么?这是一个充满对象的数组。您想对该数组做什么?例如,我想获取id:2公司名称。如果您使用console.logJSON.stringifyarray,null,2而不是像那样从控制台复制,那么读取数据会容易得多。这是否回答了您的问题?添加内置类型几乎总是一个坏主意。b已经有了内置的功能来完成这个功能。我不这么认为。因为它有扩展的能力,但是应该考虑它取决于扩展的组织方式以及它如何帮助重要的改进而不需要不必要的影响。
let a = [{id: 1, value: "rock"}, {id: 2, value: "roll"}, ...];
let item2 = a.get("id", 2, a.length-1, true),
val2 = item2.value,
idx2 = item2.index;
let item1 = a.get("id", 1, idx2 - 1, true),
val1 = item1.value,
idx1 = item1.index;
etc...
window.OO7array_get = function(key, value, start = 0, revert = false, restart = true) {
/* same as above script, dont worry feel free to copy and paste here */
};