1、将数组对象中符合要求的数据的值另存成一个新数组(hasOwnProperty、push)
const data = {
"AAA": {
"id": "AAA",
"useful": false
},
"BBB": {
"id": "BBB",
"useful": true
},
"CCC": {
"id": "CCC",
"useful": false
},
}
将其中useful的值为false的这条数据的bluId组成一个数组isUseful,
useful的值为true的这条数据的bluId组成一个数组noUseful。
答案:
const data = {
"AAA": {
"id": "AAA",
"useful": false
},
"BBB": {
"id": "BBB",
"useful": true
},
"CCC": {
"id": "CCC",
"useful": false
},
}
// 有用的id
const isUseful= [];
for (const key in data) {
if (data.hasOwnProperty(key) && data[key].useful) {
isUseful.push(data[key].bluId);
}
}
// 无用的id
const noUseful= [];
for (const key in data) {
if (data.hasOwnProperty(key) && !data[key].useful) {
noUseful.push(data[key].bluId);
}
}
console.log("有用的id列表:", isUseful);
console.log("无用的id列表:", noUseful);
2、将两个数组相同的值组成一个新数组(filter、includes)
const result = ["AAA", "BBB", "CCC", "DDD", "EEE", "FFF"];
const noUseful = ["BBB","CCC","DDD","EEE","WWW","HHH","KKK"];
使用js找出数组result在数组noUseful中同样存在的值,组成一个新的数组
答案:
const result = ["AAA", "BBB", "CCC", "DDD", "EEE", "FFF"];
const noUseful = ["BBB","CCC","DDD","EEE","WWW","HHH","KKK"];
const resultNoUseful = result.filter(item => noUseful.includes(item));
console.log(resultNoUseful ); // ["BBB","CCC","DDD","EEE"]
3、判断两个数组是不是除顺序外完全相同(Set)
已知
const arr1 = ["AAA", "BBB", "CCC", "DDD", "EEE", "FFF"];
const arr2 = ["BBB","CCC","DDD","EEE","FFF","AAA"];
忽略这两个数组中值的顺序,判断这两个数组中的存在的值是不是一样
答案:
const arr1 = ["AAA", "BBB", "CCC", "DDD", "EEE", "FFF"];
const arr2 = ["BBB","CCC","DDD","EEE", "FFF","AAA"];
const set1 = new Set(arr1);
const set2 = new Set(arr2);
if (set1.size === set2.size && [...set1].every(element => set2.has(element))) {
console.log("两个数组中的值相同");
} else {
console.log("两个数组中的值不相同");
}
4、判断两个数组是不是完全相同(every)
const arr1 = ["DWJBACTM"];
const arr2 = ["DWJBACTM", "DWJBPUBL", "DWJBCDPR"];
判断两个数组是不是完全相同
const arr1 = ["DWJBACTM"];
const arr2 = ["DWJBACTM", "DWJBPUBL", "DWJBCDPR"];
const arr3 = ["DWJBACTM"];
方法一:
if (arr1.every((value, index) => value === arr2[index])) {
console.log('两个数组完全相同');
} else {
console.log('两个数组不完全相同');
}
方法二:
function arraysEqual(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
return arr1.every((element, index) => {
return element === arr2[index];
});
}
console.log(arraysEqual(arr1, arr2)); // false
console.log(arraysEqual(arr1, arr3)); // true
5、判断数组A在B中是否存在,改变数组A中在B中存在的数据的某个值(some)
const arr = [
{ chooseColumnFlag: "Y", id: "49" },
{ chooseColumnFlag: "Y", id: "59" },
{ chooseColumnFlag: "Y", id: "62" }
];
const val = [
{ chooseColumnFlag: "Y", id: "49" },
{ chooseColumnFlag: "Y", id: "62" }
];
写一段代码,如果数组arr中的值在数组val中存在,就将数组arr中的chooseColumnFlag设置成’Y’,否则设置为’N
const arr = [
{ chooseColumnFlag: "Y", id: "49" },
{ chooseColumnFlag: "Y", id: "59" },
{ chooseColumnFlag: "Y", id: "62" }
];
const val = [
{ chooseColumnFlag: "Y", id: "49" },
{ chooseColumnFlag: "Y", id: "62" }
];
arr.forEach((item) => {
const flag = val.some(valItem => valItem.id === item.id);
item.chooseColumnFlag = flag ? "Y" : "N";
});
console.log(arr);
6、数组B剔除数组A中包含的值(filter、includes)
const arrayA = ["DWJBACTM"];
const arrayB = ["DWJBACTM", "DWJBPUBL", "DWJBCDPR"];
数组B剔除数组A中包含的值,并组成一个新数据
const arrayA = ["DWJBACTM"];
const arrayB = ["DWJBACTM", "DWJBPUBL", "DWJBCDPR"];
const newArray = arrayB.filter(item => !arrayA.includes(item));
console.log(newArray); // 输出 [ "DWJBPUBL", "DWJBCDPR" ]
7、找出数组中id为‘xx’时,另一个属性的值(filter、map)
const arr = [{a:'11',name:'nnn'},{a:'12',name:'dasd'}];
找出当a等于11时,name的值
const arr = [{a:'11',name:'nnn'},{a:'12',name:'dasd'}];
const result = arr.filter(obj => obj.a === '11').map(obj => obj.name);
console.log(result); // 输出 ['nnn']
const arr = [
{ a: '11', name: 'nnn' },
{ a: '12', name: 'dasd' },
{ a: '11', name: 'xxx' }
];
const newArr = arr.filter(item => item.a === '11').map(item => item.name);
console.log(newArr); // 输出 [ 'nnn', 'xxx' ]
8已知一个数组arr1[{name:‘simon’,age:‘12’},{name:‘abby’,age:‘18’}],数组arr2[{id:‘simon’,hobby:‘basketball’},{id:‘abby’,hobby:‘paino’},{id:‘jason’,hobby:‘music’}]。请将数组2中id与数组1中name相同的值的hobby,正确添加到arr1中,构成新的数组
let arr1 = [{name: 'simon', age: '12'}, {name: 'abby', age: '18'}];
let arr2 = [{id: 'simon', hobby: 'basketball'}, {id: 'abby', hobby: 'piano'}, {id: 'jason', hobby: 'music'}];
// 遍历arr2,将id与arr1中name相同的值的hobby添加到arr1中
arr2.forEach(item => {
let nameIndex = arr1.findIndex(e => e.name === item.id);
if (nameIndex !== -1) {
arr1[nameIndex] = Object.assign(arr1[nameIndex], {hobby: item.hobby});
}
});
console.log(arr1);
//[{name: 'simon', age: '12', hobby: 'basketball'}, {name: 'abby', age: '18', hobby: 'piano'}]