繁体   English   中英

如何在js中对arrays进行排序

[英]How sort arrays in js

有 arrays AB 我们需要将 arrays AB在值和索引上相等的所有值添加到数组C中。

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

另外:将数组A中包含在数组B中的所有唯一值添加到数组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 指出这一点。 您可以再次使用过滤器来删除重复项。 我发现了这个: Get all unique values in a JavaScript array (remove duplicates)

您可以使用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,因为这是两个独立的 output 测试。 第一种是同一个 position 中的两个元素是否具有相同的值。 第二个是它是否是与另一个数组共同的元素(无论位置如何)。

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

简单的方法和快速的解决方案:

 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM