How sort arrays in js



有数组AB。我们需要将数组AB的所有值添加到数组C中,这些值和索引都相等。

A = [a,b,c], B = [c,b,a], C = [b]

此外:将数组B中包含的数组A中的所有唯一值添加到数组D

A = [d,a,b,c], B = [c,b,a,a], D = [a,b,c]

在没有嵌套循环的情况下可以做到这一点吗?我可以处理第一个任务,但如何用值填充D?

for (let i = 0; i < a.length; i++) {
if (b[i] === a[i]) {
c.push(a[i]);
} else if() {
// Some code 
}
}

过滤方法?(针对第二个问题(

let D = A.filter(e => B.includes(e));

添加是因为你要求D包含来自A的唯一值,感谢@jarmod指出了这一点。您可以再次使用筛选器来删除重复项。我发现:获取JavaScript数组中的所有唯一值(删除重复项(

您可以使用Set来跟踪唯一值,并使用.has()在该Set中进行有效查找。此代码在代码中只使用一个循环,但多个集合操作在其内部实现中使用循环(从数组构建集合或将集合转换为数组(。这是无法避免的。

const A = ['e', 'd', 'a', 'b', 'c'];
const B = ['e', 'c', 'b', 'a', 'a'];

function processArrays(a, b) {
const c = [];
const aSet = new Set(a);
const commonSet = new Set();
for (let i = 0; i < a.length; i++) {
if (b[i] === a[i]) {
c.push(a[i]);
}
// if aSet has this value, then add it to commonSet
if (aSet.has(b[i])) {
commonSet.add(b[i])
}
}
return { samePositionElements: c, commonElements: Array.from(commonSet) };
}
console.log(processArrays(A, B));

注意,我在这里不做if/else,因为这是两个独立的输出测试。第一种情况是,位于同一位置的两个元素是否具有相同的值。第二个问题是它是否是与其他数组共有的元素(无论位置如何(。

此代码假定两个输入数组具有相同的长度。如果您希望支持不同长度的输入,则可以使用稍微多一点的代码来适应。

简单快捷的解决方案:

let A = ['a','b','c', 'e'];
let B = ['c','b','a', 'e'];
let common =[];
for(let i=0; i<A.length && i<B.length; i++){
if(A[i]==B[i]){
common.push(A[i])
}
}
console.log(common)

最新更新