我有话如列表:拆分列表为两个数组
ventana - window
puerta - door
silla - chair
现在,我需要把这个分成两个数组:
var words = ['ventana','puerta','silla'];
var defs = ['window','door','chair'];
我想我可以在换行符处拆分字符串,然后采用新的数组并在每个' - '处进行拆分。但我不确定如何做到这一点。有人能帮我吗?谢谢。
我有话如列表:拆分列表为两个数组
ventana - window
puerta - door
silla - chair
现在,我需要把这个分成两个数组:
var words = ['ventana','puerta','silla'];
var defs = ['window','door','chair'];
我想我可以在换行符处拆分字符串,然后采用新的数组并在每个' - '处进行拆分。但我不确定如何做到这一点。有人能帮我吗?谢谢。
“我想我可以在换行符的字符串分割,然后利用新的阵列和拆分,在每一个‘ - ’”
是的,那如果你工作得很好,意思是“采取新阵列并拆分”其中的每个项目。假设你开始用这三个词作为一个字符串:
var list = 'ventana - window\npuerta - door\nsilla - chair';
然后进行如下操作:
var pairs = list.split('\n'),
words = [],
defs = [],
i, tmp;
for (i = 0; i < pairs.length; i++) {
tmp = pairs[i].split(' - ');
words.push(tmp[0]);
defs.push(tmp[1]);
}
注意,此代码没有错误检查,以确保每一个换行符之间的子竟确实有一对由' - '
分开的单词,但我会将它作为一个练习...
不错,简短并且重要。 +1。 –
哇...你快! – opalenzuela
var stringYouHave = "ventana - window puerta - door silla - chair";
function getKVPairs(str){
var a = str.split(" ");
return a;
}
var kvPairs = getKVPairs(stringYouHave);
var defs= new Array();
var words = new Array();
for(var i = 0 ; i < kvPairs.length;i++){
var a = kvPairs[i].split("-");
words.push(a[0]);
defs.push(a[1]);
}
console.log(words);
console.log(defs);
这是你如何做到的。
这不会像你所期望的那样工作 – Joshua
显而易见的算法会将字符串拆分为新行并对每行进行迭代,并使用分隔符重新分割字符。
然而,它的一个更优化的版本可以是(假设该输入值是公格式):
var dic = str.split(/[\n\-]/);
var pos = 0;
for (var i = 0; i < dic.length; i++) {
words[pos] = dic[i];
dic[pos] = defs[++i];
}
一个单回路,一个单个呼叫到“分裂”,没有递归和无滥用的函数调用。
注:我没有尝试过的代码,只是一个概念。尽管如此,问题应该提供你到目前为止尝试过的东西。
+1。我喜欢这个概念。尽管我认为'/ \ n | - /'是你需要的正则表达式。 (我不太喜欢你在循环内改变循环计数器 - 对于for循环,我更喜欢在每次迭代后使用'defs [i + 1]'和'i + = 2')。但是,由于我说,+1。 – nnnnnn
那么,我们其实并没有宣布真正的字符串,但我相信你是对的。 – opalenzuela
在现代浏览器中,你可以使用的方法类似reduce:
// assuming `s` is the string
var dict = s.split(/\n/)
.reduce(function(dict, item) {
var terms = item.split(/ - /);
dict.words.push(terms[0]);
dict.defs.push(terms[1]);
return dict;
}, {words:[], defs:[]});
您可以发布您的代码那么远?什么地方出了错? – elclanrs
注意:要将一段代码缩进四格,或者选择相关的块并单击编辑窗口上方的“{}”按钮。只能使用''代码,你想要显示在一个句子'这样'内联。 – nnnnnn
你已经知道了逻辑。所有你需要的是一些代码。为什么不尝试一些开始,我们会从那里帮助你 – MarsOne