gpt4 book ai didi

javascript - 将数组与对象键进行比较并维护顺序

转载 作者:行者123 更新时间:2023-11-29 21:40:51 25 4
gpt4 key购买 nike

我需要从传入的输入数组中获取每个键的数据。假设我的输入数组是:

输入数组:['我','很好','好'](我很好)

我有一个对象,每个对象都有匹配的键,它们都有更多相关数据。

我想以相同的顺序取回该数据。

不幸的是,输入数据的顺序可能并不总是与键在对象中出现的顺序匹配,但我需要在返回结果键数据时保持顺序。

基本上,我如何遍历一个数组(比方说输入数组)并与一个对象进行比较,并以相同的顺序针对那些匹配的键返回数据?

对象:

var myObj = {
"Foo":
{
'wo' : ['I/me','我'],
'hao' : ['good','好'],
},
"Bar":
{
'xi': ['wash', '洗'],
'hen' : ['very', '很']
},
...
}

获取函数:

getValues : function (inputArray) {
var result = [];
for (obj in myObj) {
for (key in myObj[obj]) {
for (var i = 0; i < inputArray.length; i++) {
//IE: if 我 === 我
if (inputArray[i] === myObj[obj][key][1]) {
result.push(key);
if (result.length >= inputArray.length) {
return result;
}
...

结果:['wo', 'hao', 'hen'](相当于'I, good, very')

但结果需要是:['wo', 'hen', 'hao'](等同于'I, very, good')

注意:如果有任何帮助,我正在使用 jQuery。


编辑:我能做的是一开始拆分字符串,然后遍历 inputArray 的长度并一个一个地调用 getValues

这个问题是,现在我开始在每次调用时循环遍历 myObj 数据结构,而不是使用一串值调用一次并循环遍历 myObj一次,在向下扫描列表时添加每个键。

            var split = inputArray.split('');
var resultsList = [];

for (var i = 0; i < split.length; i++) {
resultsList.push(getValues(split[i]));
}


getValues : function (word) {

for (obj in myObj) {
for (key in myObj[obj]) {
if (character === myObj[obj][key][0]) {
return key;
}
}
}
return 'not found';
},

这个解决方案感觉不太理想。

最佳答案

问题是您正在搜索对象中的每个键而不是 inputArray 中的每个位置:

for (obj in myObj) {
for (key in myObj[obj]) {
for (var i = 0; i < inputArray.length; i++) {

应该是:

for (var i = 0; i < inputArray.length; i++) {
for (obj in myObj) {
for (key in myObj[obj]) {

这种方式将确保它将找到并添加它们输入的顺序,而不是它们在对象中的顺序。

    var myObj = {
"Foo":
{
'wo' : ['I/me','我'],
'hao' : ['good','好'],
},
"Bar":
{
'xi': ['wash', '洗'],
'hen' : ['very', '很']
},
};
function getValues (inputArray) {
var result = [];

for (var i = 0; i < inputArray.length; i++) {
for (obj in myObj) {
for (key in myObj[obj]) {
if (inputArray[i] === myObj[obj][key][1]) {
result.push(key);
//stop loops if results list matches input list
if (result.length >= inputArray.length) {
return result;
}
}
}
}
}
}
var inputResult = getValues(['我','很','好'])
, result = '';
for(var index = 0; index < inputResult.length; index ++){
result += inputResult[index] + ' ';
}
document.write(result);

关于javascript - 将数组与对象键进行比较并维护顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com