检查数组是否包含JavaScript中具有特定属性值的对象?
如果我有检查数组是否包含JavaScript中具有特定属性值的对象?,javascript,arrays,object,Javascript,Arrays,Object,如果我有 [Object(id:03235252, name:"streetAddress"), Object(id:32624666, name:"zipCode")...] 如果名称设置为“zipCode”,如何从该数组中删除对象 向后循环数组(这样在拼接时就不必跳过索引) 检查每个项目的名称是否为“zipCode” 如果是,请使用数组将其剪接。剪接(索引,1) 然后: 如果可能有多个名称的值为“zipCode”,则继续 打破循环 如果需要修改现有阵列,应使用splice() 请
[Object(id:03235252, name:"streetAddress"), Object(id:32624666, name:"zipCode")...]
如果名称设置为“zipCode”,如何从该数组中删除对象
- 向后循环数组(这样在拼接时就不必跳过索引)
- 检查每个项目的名称是否为“zipCode”
- 如果是,请使用数组将其剪接。剪接(索引,1)李>
- 如果可能有多个名称的值为“zipCode”,则继续
- 打破循环
splice()
请注意,我正在反向循环。这是为了处理这样一个事实,即当您执行.splice(i,1)
时,阵列将重新编制索引
如果我们做了一个正向循环,那么每当我们做.splice()
时,我们也需要调整i
,以避免跳过索引。更新建议
更新了这个答案,因为在数组上做原型是不好的prac,所以让使用该建议的人编写更好的代码这里是一个更好的选择:
const myArr = [
{
name: "lars",
age: 25
}, {
name: "hugo",
age: 28
}, {
name: "bent",
age: 24
}, {
name: "jimmy",
age: 22
}
];
const findAndRemove = (array, prop, value) => {
return array.filter((item) => item[prop] !== value);
}
const newArr = findAndRemove(myArr, 'name', 'jimmy')
console.log(newArr)
可以找到并测试新代码
老建议
这也可以通过阵列上的原型来完成
Array.prototype.containsByProp = function(propName, value){
for (var i = this.length - 1; i > -1; i--) {
var propObj = this[i];
if(propObj[propName] === value) {
return true;
}
}
return false;
}
var myArr = [
{
name: "lars",
age: 25
}, {
name: "hugo",
age: 28
}, {
name: "bent",
age: 24
}, {
name: "jimmy",
age: 22
}
];
console.log(myArr.containsByProp("name", "brent")); // Returns false
console.log(myArr.containsByProp("name", "bent")); // Returns true
还可以找到并测试代码
这可能是一个详细且简单的解决方案
//plain array
var arr = ['a', 'b', 'c'];
var check = arr.includes('a');
console.log(check); //returns true
if (check)
{
// value exists in array
//write some codes
}
// array with objects
var arr = [
{x:'a', y:'b'},
{x:'p', y:'q'}
];
// if you want to check if x:'p' exists in arr
var check = arr.filter(function (elm){
if (elm.x == 'p')
{
return elm; // returns length = 1 (object exists in array)
}
});
// or y:'q' exists in arr
var check = arr.filter(function (elm){
if (elm.y == 'q')
{
return elm; // returns length = 1 (object exists in array)
}
});
// if you want to check, if the entire object {x:'p', y:'q'} exists in arr
var check = arr.filter(function (elm){
if (elm.x == 'p' && elm.y == 'q')
{
return elm; // returns length = 1 (object exists in array)
}
});
// in all cases
console.log(check.length); // returns 1
if (check.length > 0)
{
// returns true
// object exists in array
//write some codes
}
可能值得一提的是,你可能不得不这么做。应该注意的是,这不会从数组中删除对象。它构建一个新数组并替换旧数组,如果对同一数组有多个引用,则可能会出现问题。应正确写入:[{id:03235252,名称:“streetAddress”},{id:32624666,名称:“zipCode”}]
const myArr = [
{
name: "lars",
age: 25
}, {
name: "hugo",
age: 28
}, {
name: "bent",
age: 24
}, {
name: "jimmy",
age: 22
}
];
const findAndRemove = (array, prop, value) => {
return array.filter((item) => item[prop] !== value);
}
const newArr = findAndRemove(myArr, 'name', 'jimmy')
console.log(newArr)
Array.prototype.containsByProp = function(propName, value){
for (var i = this.length - 1; i > -1; i--) {
var propObj = this[i];
if(propObj[propName] === value) {
return true;
}
}
return false;
}
var myArr = [
{
name: "lars",
age: 25
}, {
name: "hugo",
age: 28
}, {
name: "bent",
age: 24
}, {
name: "jimmy",
age: 22
}
];
console.log(myArr.containsByProp("name", "brent")); // Returns false
console.log(myArr.containsByProp("name", "bent")); // Returns true
//plain array
var arr = ['a', 'b', 'c'];
var check = arr.includes('a');
console.log(check); //returns true
if (check)
{
// value exists in array
//write some codes
}
// array with objects
var arr = [
{x:'a', y:'b'},
{x:'p', y:'q'}
];
// if you want to check if x:'p' exists in arr
var check = arr.filter(function (elm){
if (elm.x == 'p')
{
return elm; // returns length = 1 (object exists in array)
}
});
// or y:'q' exists in arr
var check = arr.filter(function (elm){
if (elm.y == 'q')
{
return elm; // returns length = 1 (object exists in array)
}
});
// if you want to check, if the entire object {x:'p', y:'q'} exists in arr
var check = arr.filter(function (elm){
if (elm.x == 'p' && elm.y == 'q')
{
return elm; // returns length = 1 (object exists in array)
}
});
// in all cases
console.log(check.length); // returns 1
if (check.length > 0)
{
// returns true
// object exists in array
//write some codes
}