在Java中,您可以使用for循环遍历数组中的对象,如下所示:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
你能用JavaScript做同样的事吗?
我有一个数组:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
Run Code Online (Sandbox Code Playgroud)
我无法改变数组的结构.我正在传递id 45,我想'bar'在数组中获取该对象.
如何在JavaScript或使用jQuery中执行此操作?
假设我有一个包含四个对象的数组:
var jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4},
{a: 5, b: 6},
{a: 7, b: 8}
];
Run Code Online (Sandbox Code Playgroud)
有没有办法可以{a: 5, b: 6}通过属性的值获取第三个对象()b,例如没有for...in循环?
至于详细的其他地方,否则显然是众所周知的,IE浏览器(版本绝对7,并在某些情况下,版本8)不落实的关键功能,特别是Array(如forEach,indexOf等).
这里和那里有许多变通方法,但我想将一组适当的,规范的实现折叠到我们的网站中,而不是复制,粘贴或破解我们自己的实现.我找到了js-methods,看起来很有前景,但我想在这里发帖看看是否有更高度推荐的另一个库.一些杂项标准:
每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?
以TJ Holowaychuk的should.js为例.他增加了一个简单的getter来Object,一切工作正常(来源).
Object.defineProperty(Object.prototype, 'should', {
set: function(){},
get: function(){
return new Assertion(Object(this).valueOf());
},
configurable: true
});
Run Code Online (Sandbox Code Playgroud)
这真的很有道理.例如,可以扩展Array.
Array.defineProperty(Array.prototype, "remove", {
set: function(){},
get: function(){
return removeArrayElement.bind(this);
}
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)
是否有任何反对扩展本机类型的论据?
我试图通过其中一个键的值获取数组中的对象.
数组:
var arr = [
{
city: 'Amsterdam',
title: 'This is Amsterdam!'
},
{
city: 'Berlin',
title: 'This is Berlin!'
},
{
city: 'Budapest',
title: 'This is Budapest!'
}
];
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情,lodash但没有成功.
var picked = lodash.pickBy(arr, lodash.isEqual('Amsterdam');
Run Code Online (Sandbox Code Playgroud)
它返回一个空对象.
关于如何以lodash的方式做到这一点的任何想法(如果它甚至可能)?我可以用经典的方式做到这一点,创建一个新的数组,循环遍历所有对象,并将符合我标准的对象推送到新数组.但有没有办法用lodash做到这一点?
这不是重复的.
我正在寻找一种检查对象数组中是否存在对象的好方法.当所有键/值存在于该数组中的同一对象中时,预期结果为true.
通过使用jQuery.grep或在Javascript中的对象数组中查找值返回找到的对象,在JavaScript对象数组中通过id浏览stackoverflow(如find对象)找到的答案.我正在寻找的是一个布尔结果(不是找到的对象).
我知道我可以循环所有数组元素,然后比较每个值....等
但我的意思是,如果有一种方法可以使用这样的JS方法:
var listOfObjecs = [
{id: 1, name: "Name 1", score: 11},
{id: 2, name: "Name 2", score: 22},
{id: 3, name: "Name 3", score: 33},
{id: 4, name: "Name 4", score: 44},
{id: 5, name: "Name 5", score: 55},
];
var isObjectExist = function(search){
return listOfObjecs.filter(function(obj){
if(obj.id===search.id && obj.name===search.name && obj.score===search.score){
return true;
}
return false;
});
}
console.log( isObjectExist({id: 3, name: "Name …Run Code Online (Sandbox Code Playgroud)有一个对象数组(489 个对象)。一个对象有一个键,它有另一个对象(子对象)。子对象的数量是不确定的。
我也创建了一个小提琴。请找到以下搜索功能:
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
parent = obj;
objects = objects.concat(getObjects(obj[i], key, val));
} else {
if(obj[i].toString().toLowerCase().indexOf(val.toString().toLowerCase()) > -1) {
objects.push(obj);
}
}
}
return objects;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想在包括嵌套对象 ( asset_info)的对象数组中搜索搜索字符串。没有getObjects使用以下功能的搜索工作正常。
this.data.filter(function(row){
var flag;
for(var prop in (columns.length > 0 ? columns : row)){
flag = false;
flag = row[columns.length > 0 ? columns[prop] …Run Code Online (Sandbox Code Playgroud) 我的模板中有这一行:
<span>{{ data.things.find(r => { return r.id == 5 }).description }}</span>
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到以下错误:
Parser Error: Bindings cannot contain assignments at column...
Run Code Online (Sandbox Code Playgroud)
这是否意味着您无法array.find在绑定中使用?
我知道我的对象有值,表达式在监视窗口中计算.有什么建议?
编辑:虽然这个问题及其答案将绕过这个问题,但我不认为它们是重复的.这个问题特定于过滤到较小的列表,也许是一条记录,因为我的问题是每次都得到一条记录.@ Thierry-Templier在这方面的答案看起来不错,我喜欢它的html干净程度.
我有一个包含用户信息的 JSON 对象,它是一个包含数千个用户的大型数组,其中一个示例是:
[ {
"FirstName" : "Joe",
"LastName" : "Doe",
"Address" : "123 Main Street"
}
]
Run Code Online (Sandbox Code Playgroud)
我希望能够根据名字和姓氏在此 json 数组中搜索并返回匹配的对象。
我有一个 id,我需要检查它是否在对象数组中。例子,
id = 2;
const arr = [{id: 1, name: 'James'}, {id: 2, name: 'Peter'}, {id: 3, name: 'Mike'}]
Run Code Online (Sandbox Code Playgroud)
有没有一个javascript函数可以做到这一点?我在网上找不到 include() 方法仅比较对象是否在数组中,而不比较对象是否存在属性