javascript - 知道Javascript中数组中的最后一个数字等于另一个数字
问题描述
const numbersArray = [5, 3, 1, 3, 4, 5, 3, 1];
var pastNumbers = [];
for (let i = 0; i < numbersArray.length; i++) {
const number = numbersArray[i];
pastNumbers.push(number);
var count = 0;
pastNumbers.forEach((v) => (v === number && count++));
console.log(`There are ${count} numbers before equal to ${number}. The last equal number is in the ${???} position.`);
}
我有一个名为的数组pastNumbers
,它存储先前由for
另一个名为numbersArray
. 然后forEach
我得到先前数字的数量等于number
。
我想知道最后一个数字number
在pastNumbers
数组中的位置。我该怎么做?
解决方案
用 for 循环更新
使用对象而不是数组来跟踪,这样会更容易一些。
在此示例中,我将遍历每个数字并将开头 ( unshift
) 的位置添加到 pastNumber[number]。
我正在使用 unshift ,以便第一项是注册的最后一个位置。这样我就可以查找[0]
而不是使用[$.length-1]
(但我仍然使用长度,所以你push
也很好 ♂️)
const numbersArray = [5, 3, 1, 3, 4, 5, 3, 1];
const pastNumbers = {};
for (let i = 0; i < numbersArray.length; i++) {
const number = numbersArray[i];
if (!pastNumbers[number]) {
pastNumbers[number] = [];
}
if (pastNumbers[number].length > 0) {
console.log(
`There are ${pastNumbers[number].length} numbers before equal to ${number}. The last equal number is in the ${pastNumbers[number][0]} position.`
);
}
pastNumbers[number].unshift(i);
}
推荐阅读
- math - 分辨率和重要数字处理
- elasticsearch - script_score 查询不支持 [查询]
- java - 两个 java 应用程序之间的通信在 JBoss 7.0 中正常工作,但在 Tomcat 8.5 中不工作
- geocoding - “Buffalo”查询无法从 /discover 端点返回“Buffalo Exchange”
- php - Uncaught ImagickException: UnableToOpenBlob 'uploads/Datapath.pdf': 没有这样的文件或目录@error/blob.c/OpenBlob/3315
- javascript - 在 Angular 中返回 observable 之前添加验证
- c++ - Qt 应该在构建时跟踪资源的变化吗?
- javascript - 来自对象的数据未在本机反应的任何组件中呈现
- ios - 连接服务协议出错:连接http://127.0.0.1失败
- java - 为多线程设置定时锁